web-dev-qa-db-ja.com

iTextの横向きと位置付け?

私はiText(5.4.2、最新バージョン)を使い始めたばかりで、まだうまくいかないことが2つあります。

  • 横長のドキュメントを作成します。すべてのページが縦向きにレンダリングされます。
  • 特定の位置に画像を挿入する(上から左へのミリメートル数)。

以下のコードがあります。

Document d = new Document(PageSize.A4_LANDSCAPE,0,0,0,0);
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream("C:/test.pdf"));
document.open();
document.newPage();
Image img = Image.getInstance(String.format("C:/file.png"));
img.scaleToFit(400,240);
document.left(100f);
document.top(150f);
document.add(img);
document.close();

ただし、ページは(横ではなく)ポートレートでレンダリングされ、画像は左上隅に配置されます(要求されたように10ユニットおよび15ユニット離れていない)。何が間違っていますか?

29
user1111929

あなたは_PageSize.A4_LANDSCAPE_を使用しています。これは貢献者によって導入された変数であり、メインリリースに追加されるべきではありませんでした。代わりにPageSize.A4.rotate()を使用してください。

ラインで何を達成したいのかは明確ではありません:

_document.left(100f);
document.top(150f);
_

それらはゲッターであり、セッターではありません。 PDFはHTMLに似ていると仮定しているように見えます。この仮定は間違っています。

画像を左から10ユーザー単位、上から15ユーザー単位(この場合、100と150は間違った値)に配置したい場合、Documentコンストラクターの0値を置き換えて、左マージンを定義できます。 10ユーザー単位と15単位の上部マージン。

もう1つの方法は、setAbsolutePosition()メソッドを使用して画像の絶対位置を定義することです。その場合、最初から作成されたドキュメントの場合、ページの左下隅の座標がx = 0、y = 0になるように座標系が方向付けられていることに注意する必要があります。

51
Bruno Lowagie

この例を使用することができますこれは私のために働く

 Document document = new Document();
 document.setPageSize(PageSize.A4.rotate());
4
Madhuka Dilhan
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
3
Mahmaood ali
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);

これは私のために働いた、私はちょうど上のものからいくつかのビットをハックした

0
denis