0

テキストのブロックを既存の PDF テンプレートに追加しようとしています。

左マージンと右マージンを設定できるようにしたいのですが、テキストの量が不明なので、入力テキストに対してボックスを拡張する必要があります。

テンプレートにテキスト エリアを配置してテキストを挿入することはできましたが、この方法では、テキスト エリアの最終行の位置を明示的に設定する必要があります。

私がこれまでに持っているコードは次のpdfStamperとおりです(事前に定義されています):

BaseFont bf = BaseFont.CreateFont(BaseFont.COURIER, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 11, Font.NORMAL);
Phrase unicodes = new Phrase(reports.StringText, font);
PdfContentByte over;
over = pdfstamper.GetOverContent(1);
ColumnText ct = new ColumnText(over);
ct.SetSimpleColumn(unicodes, 19, **80**, 575, 335, 10, Element.ALIGN_LEFT);
ct.Go();
4

1 に答える 1

0

OK、私は他の解決策を試しました(うまくいきません)。どうぞ:

PdfPTable table = new PdfPTable(1);
string text = "blab balba b balbala ";
string finalText = "TestTitle1\r\n\r\n";

for (int i = 0; i < 200; ++i)
{
     finalText += text;
}
table.AddCell(finalText);
table.TotalWidth = 300;
table.WriteSelectedRows(0, -1, 20, 325, pdfstamper.GetUnderContent(1));

これにより、目的の場所に目的の幅でテーブルが配置されます。しかし、その 1 つのページに収まるテキストが多すぎる場合は、次のページに拡張する必要がありますが、そうではありません。WriteSelectedRowsオプションのキャンバスの配列 ( pdfstamper.GetUnderContent(1)and )を渡そうとしましたが、これは例外pdfstamper.GetUnderContent(2)をスローするだけです。Index was outside the bounds of the array

または、これがあります:

PdfContentByte over;
over = pdfstamper.GetOverContent(1);
over.BeginText();
over.SetTextMatrix(20, 300);
over.ShowText(report.AutonomyText);
over.EndText();

しかし、テキストはページの端からはみ出してしまいます。

于 2009-08-03T10:21:09.593 に答える