40

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 単位ではありません)。私は何を間違っていますか?

4

4 に答える 4

61

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 になるように座標系が設定されていることに注意する必要があります。

于 2013-06-24T13:17:16.993 に答える
5
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
于 2017-07-20T07:15:11.670 に答える