在 Java 中旋转 PDF 文本
Contents
[
Hide
]
Aspose.PDF for Java 允许您旋转单个文本片段以及整个文本段落。
旋转单个文本片段
当同一行上的多个文本片段需要使用不同的旋转角度时,请使用此示例。
- 创建一个新的 PDF 文档并添加页面。
- 创建具有所需旋转值的文本片段。
- 在其后追加
TextBuilder并保存结果。
public static void rotateTextInsidePdf1(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextFragment textFragment1 = new TextFragment("main text");
textFragment1.setPosition(new Position(100, 600));
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment2 = new TextFragment("rotated text");
textFragment2.setPosition(new Position(200, 600));
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment2.getTextState().setRotation(45);
TextFragment textFragment3 = new TextFragment("rotated text");
textFragment3.setPosition(new Position(300, 600));
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(90);
TextBuilder builder = new TextBuilder(page);
builder.appendText(textFragment1);
builder.appendText(textFragment2);
builder.appendText(textFragment3);
document.save(outputFile.toString());
}
}
在文本段落内旋转行
当段落需要同时包含普通行和旋转行时,请使用此示例。
- 创建一个新的 PDF 文档并添加页面。
- 创建一个
TextParagraph并追加具有不同旋转设置的文本片段。 - 将段落添加到页面并保存文档。
public static void rotateTextInsidePdf2(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextParagraph paragraph = new TextParagraph();
paragraph.setPosition(new Position(200, 600));
TextFragment textFragment1 = new TextFragment("rotated text");
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment1.getTextState().setRotation(45);
TextFragment textFragment2 = new TextFragment("main text");
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment3 = new TextFragment("another rotated text");
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(-45);
paragraph.appendLine(textFragment1);
paragraph.appendLine(textFragment2);
paragraph.appendLine(textFragment3);
TextBuilder textBuilder = new TextBuilder(page);
textBuilder.appendParagraph(paragraph);
document.save(outputFile.toString());
}
}
在没有明确位置的情况下旋转段落片段
当需要通过普通页面段落流添加旋转文本时,请使用此示例。
- 创建一个新的 PDF 文档并添加页面。
- 创建若干具有不同旋转值的文本片段。
- 将它们添加到页面段落集合并保存 PDF。
public static void rotateTextInsidePdf3(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
TextFragment textFragment1 = new TextFragment("main text");
textFragment1.getTextState().setFontSize(12);
textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
TextFragment textFragment2 = new TextFragment("rotated text");
textFragment2.getTextState().setFontSize(12);
textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment2.getTextState().setRotation(315);
TextFragment textFragment3 = new TextFragment("rotated text");
textFragment3.getTextState().setFontSize(12);
textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment3.getTextState().setRotation(270);
page.getParagraphs().add(textFragment1);
page.getParagraphs().add(textFragment2);
page.getParagraphs().add(textFragment3);
document.save(outputFile.toString());
}
}
旋转完整段落
当需要旋转整个段落块且每行保持共享样式时,请使用此示例。
- 创建一个新的 PDF 文档并添加页面。
- 构建多个
TextParagraph具有段落级旋转的对象。 - 使用共享的辅助方法创建这些行,追加它们,并保存文档。
public static void rotateTextInsidePdf4(Path outputFile) {
try (Document document = new Document()) {
Page page = document.getPages().add();
for (int i = 0; i < 4; i++) {
TextParagraph paragraph = new TextParagraph();
paragraph.setPosition(new Position(200, 600));
paragraph.setRotation(i * 90 + 45);
TextFragment textFragment1 = rotatedLine("Paragraph Text", false);
TextFragment textFragment2 = rotatedLine("Second line of text", false);
TextFragment textFragment3 = rotatedLine("And some more text...", true);
paragraph.appendLine(textFragment1);
paragraph.appendLine(textFragment2);
paragraph.appendLine(textFragment3);
TextBuilder builder = new TextBuilder(page);
builder.appendParagraph(paragraph);
}
document.save(outputFile.toString());
}
}
private static TextFragment rotatedLine(String text, boolean underline) {
TextFragment fragment = new TextFragment(text);
fragment.getTextState().setFontSize(12);
fragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
fragment.getTextState().setBackgroundColor(Color.getLightGray());
fragment.getTextState().setForegroundColor(Color.getBlue());
fragment.getTextState().setUnderline(underline);
return fragment;
}