19

封筒ウィンドウがどこにあるかに応じて、空の場所を残して、その上に住所を貼り付けて、手紙を生成しようとしています。

だから私はこれを始めます:

Document doc = new Document(PageSize.LETTER, 72, 72, 72, 72);
var w = PdfWriter.GetInstance(doc, output);
Font font = FontFactory.GetFont("arial", 10);
doc.Open();
doc.Add(new Paragraph("date", font) { SpacingAfter = 5 });
doc.Add(new Paragraph("\n\n\n\n\n\n", font));//empty spot
doc.Add(new Paragraph("long\n paragraph\ns panning\ multiple\n lines\n", font) { SpacingAfter = 5 });
doc.Add(new Paragraph("long\n paragraph\ns panning\ multiple\n lines\n", font) { SpacingAfter = 5 });
doc.Add(new Paragraph("long\n paragraph\ns panning\ multiple\n lines\n", font) { SpacingAfter = 5 });
doc.Add(new Paragraph("long\n paragraph\ns panning\ multiple\n lines\n", font) { SpacingAfter = 5 });
doc.Add(new Paragraph("long\n paragraph\ns panning\ multiple\n lines\n", font) { SpacingAfter = 5 });

float llx = 63f, lly = 450f, urx = 387f, ury = 531f;
?? Somehow add "name\n address line 1\n address line2\n city state zip"

doc.Close();

それらの座標にテキストを追加できることを望んでいましたが、方法がわかりませんでした...誰かがそれを行う方法を知っていますか?

4

3 に答える 3

25

答えは「ここ」で見つかりました。(以下は、 Yannick Smitsからの回答の引用です)

===============

これを試して:

ColumnText ct = new ColumnText(cb);
Phrase myText = new Phrase("TEST paragraph\nNewline");
ct.SetSimpleColumn(myText, 34, 750, 580, 317, 15, Element.ALIGN_LEFT);
ct.Go();

SetSimpleColumn のパラメーターは次のとおりです。

  1. 表現
  2. 左下-x
  3. 左下y
  4. 右上 x (llx + 幅)
  5. 右上-y (lly + 高さ)
  6. 行送り (印刷行間の余白の量)
  7. アライメント。
于 2012-08-08T14:07:10.793 に答える
20

Text Matrix で ContentByte を使用して、必要な場所にテキストを描画することもできます。

PdfContentByte cb = writer.DirectContent;
cb.BeginText();
BaseFont f_cn = BaseFont.CreateFont("c:\\windows\\fonts\\calibri.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
cb.SetFontAndSize(f_cn, 6);
cb.SetTextMatrix(475, 15);  //(xPos, yPos)
cb.ShowText("Some text here and the Date: " + DateTime.Now.ToShortDateString());
cb.EndText();

利点は、ボックスのフル サイズを描画する必要がない場合、テキストが入ることです。Simple Column を使用すると、ドキュメントに四角形を描画し、その中にテキストを配置します。ContentByte を使用すると、四角形をかわして、テキストを単独で配置できます。

于 2012-08-08T14:29:15.330 に答える