Java 使用iText拆分旋转的段落
我正在使用Java中的iText库(版本5.5.9)。我试图呈现一个旋转的文本,在一个页面上分成两个不同的矩形 首先,考虑一个简单的任务。只需将段落顺时针旋转90度即可。我可以使用以下代码执行此操作:Java 使用iText拆分旋转的段落,java,itext,Java,Itext,我正在使用Java中的iText库(版本5.5.9)。我试图呈现一个旋转的文本,在一个页面上分成两个不同的矩形 首先,考虑一个简单的任务。只需将段落顺时针旋转90度即可。我可以使用以下代码执行此操作: final Document document = new Document(PageSize.A3); document.setMargins(0f, 0f, 0f, 0f); final PdfWriter pdfWriter = PdfWriter.getInstance(document,
final Document document = new Document(PageSize.A3);
document.setMargins(0f, 0f, 0f, 0f);
final PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
document.open();
final String text = "some very long text ...";
final float textWidth = 600f;
final float textHeight = 100f;
final Paragraph paragraph = new Paragraph(text, myFont);
paragraph.setAlignment(Element.ALIGN_JUSTIFIED);
paragraph.setLeading(0f, 1.2f);
final PdfTemplate textTemplate = PdfTemplate.createTemplate(pdfWriter, textWidth, textHeight);
final ColumnText columnText = new ColumnText(textTemplate);
columnText.setSimpleColumn(0, 0, textWidth, textHeight);
columnText.addElement(paragraph);
columnText.go();
final Image textImage = Image.getInstance(textTemplate);
textImage.setInterpolation(true);
textImage.scaleAbsolute(textWidth, textHeight);
textImage.setRotationDegrees(-90f);
textImage.setAbsolutePosition(0f, 800f);
document.add(textImage);
document.close();
但是,文本太长,无法放入该矩形中。
我想在页面上再定义一个矩形,并在第二个矩形中呈现其余文本。
文本应在两个矩形中顺时针旋转90度。
文本应该自动拆分(就像一个长段落在下一页自动继续)
这在iText中是可能的吗?怎么做
谢谢。以下是我对自己问题的解答: 我定义了
PdfTemplate
的两个实例,但只保留了ColumnText
的一个实例。与ColumnText
关联的PdfTemplate
被切换,并且方法go()
为每个模板调用一次
final int goResult = columnText.go();
if (ColumnText.hasMoreText(goResult)) {
...
}
我的问题中代码的适当部分应按以下方式修改:
final PdfTemplate textTemplate1 = PdfTemplate.createTemplate(pdfWriter, textWidth, textHeight);
final PdfTemplate textTemplate2 = PdfTemplate.createTemplate(pdfWriter, textWidth, textHeight);
final ColumnText columnText = new ColumnText(textTemplate1);
columnText.setSimpleColumn(0f, 0f, textTemplate1.getWidth(), textTemplate1.getHeight());
columnText.addElement(paragraph);
columnText.go();
columnText.setCanvas(textTemplate2);
columnText.setSimpleColumn(0f, 0f, textTemplate2.getWidth(), textTemplate2.getHeight());
columnText.go();
方法go()
返回int
状态。如果我不确定是否还有一些文本不适合上一个模板,我可以测试此状态
final int goResult = columnText.go();
if (ColumnText.hasMoreText(goResult)) {
...
}
请注意,我的解决方案基于以下示例: