私は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ユニット離れていない)。何が間違っていますか?
あなたは_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になるように座標系が方向付けられていることに注意する必要があります。
この例を使用することができますこれは私のために働く
Document document = new Document();
document.setPageSize(PageSize.A4.rotate());
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);
これは私のために働いた、私はちょうど上のものからいくつかのビットをハックした