如何使用 itext 2.1.7 垂直创建矩形并在 PDF 中添加文本

How to create rectangle vertically and add text to it in PDF using itext 2.1.7

我的要求是直的,我想创建一个垂直放置的矩形,然后从下到上向其中添加文本。 (基本上是90度方框)在PDF的所有页面

我尝试使用下面的代码快照实现它,但我希望它包含在盒子的特定尺寸内,我无法使用这种 ColumnText 方法控制它

例如:

ColumnText.showTextAligned(canvas, PdfContentByte.ALIGN_LEFT, note,
                        .03F * pageWidth, .68F * pageHeight, 90);

对于像您这样的任务,ColumnText 的静态便捷方法是不够的,您需要实际创建并参数化一个完整的 ColumnText 实例。

例如像这样:

float width = Utilities.millimetersToPoints(10);
float height = Utilities.millimetersToPoints(100);
float x = Utilities.millimetersToPoints(15);
float y = Utilities.millimetersToPoints(150);
float fontHeight = Utilities.millimetersToPoints(4);
String content = "Some text to fill the box. There's nothing really to say, just a box to fill. So let's fill the box.";

PdfReader reader = new PdfReader(YOUR_SOURCE_FILE);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(new File(RESULT_FOLDER, "RotatedBoxForAbbas.pdf")));
Rectangle cropBox = reader.getCropBox(1);
PdfContentByte canvas = stamper.getOverContent(1);
canvas.concatCTM(0, 1, -1, 0, cropBox.getLeft() + x + width, cropBox.getBottom() + y);
canvas.rectangle(0, 0, height, width);
canvas.stroke();
ColumnText columnText = new ColumnText(canvas);
columnText.addText(new Chunk(content, new Font(FontFamily.HELVETICA, fontHeight)));
columnText.setLeading(fontHeight);
columnText.setSimpleColumn(2, 0, height - 4, width);
columnText.go();
stamper.close();

(AddTextBox 测试 testRotatedBoxForAbbas)

(虽然此测试是为 iText 5 创建的,但在调整导入包后它应该与 iText 2.1.7 和 OpenPdf 相同。)

你在这个问题中没有提到尺寸,但在你之前的问题中,删除了一个你提到的以毫米为单位的尺寸,所以我在这里也使用了毫米。

空白源页面上的结果: