在 PDF 中旋转文本

使用旋转属性在 PDF 中旋转文本

通过使用 TextFragment 类的 setRotation 方法,您可以在不同角度旋转文本。文本旋转可以用于文档生成的不同场景。您可以指定旋转角度(以度为单位)来根据需要旋转文本。请查看以下不同场景,您可以在其中实现文本旋转。

使用 TextFragment 和 TextBuilder 实现旋转

public class ExampleRotateText {
    private static String _dataDir = "/home/admin1/pdf-examples/Samples/";

    public static void ImplementRotationUsingTextFragmentAndTextBuilder() {

        // 初始化文档对象
        Document pdfDocument = new Document();
        // 获取特定页面
        Page pdfPage = pdfDocument.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 对象
        TextBuilder textBuilder = new TextBuilder(pdfPage);
        // 将文本片段添加到 PDF 页面
        textBuilder.appendText(textFragment1);
        textBuilder.appendText(textFragment2);
        textBuilder.appendText(textFragment3);

        // 保存文档
        pdfDocument.save(_dataDir + "TextFragmentTests_Rotated1_out.pdf");
    }
}

实现使用 TextParagraph 和 TextBuilder 进行旋转(旋转的片段)

public static void ImplementRotationUsingTextParagraphAndTextBuilder_RotatedFragments() {

    // 初始化文档对象
    Document pdfDocument = new Document();
    // 获取特定页面
    Page pdfPage = (Page) pdfDocument.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 textBuilder = new TextBuilder(pdfPage);
    // 将文本段落附加到 PDF 页面
    textBuilder.appendParagraph(paragraph);
    // 保存文档
    pdfDocument.save(_dataDir + "TextFragmentTests_Rotated2_out.pdf");
}

实现使用 TextFragment 和 Page.Paragraphs 的旋转

public static void ImplementRotationUsingTextFragmentAndPageParagraphs() {
    // 初始化文档对象
    Document pdfDocument = new Document();
    // 获取特定页面
    Page pdfPage = (Page) pdfDocument.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);
    pdfPage.getParagraphs().add(textFragment1);
    pdfPage.getParagraphs().add(textFragment2);
    pdfPage.getParagraphs().add(textFragment3);

    // 保存文档
    pdfDocument.save(_dataDir + "TextFragmentTests_Rotated3_out.pdf");
    }

使用 TextParagraph 和 TextBuilder 实现旋转(整个段落旋转)

public static void ImplementRotationUsingTextParagraphAndTextBuilder() {

    // 初始化文档对象
    Document pdfDocument = new Document();
    // 获取特定页面
    Page pdfPage = pdfDocument.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 = new TextFragment("段落文本");
        // 创建文本片段
        textFragment1.getTextState().setFontSize(12);
        textFragment1.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
        textFragment1.getTextState().setBackgroundColor(Color.getLightGray());
        textFragment1.getTextState().setForegroundColor(Color.getBlue());

        // 创建文本片段
        TextFragment textFragment2 = new TextFragment("第二行文本");
        // 设置文本属性
        textFragment2.getTextState().setFontSize(12);
        textFragment2.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
        textFragment2.getTextState().setBackgroundColor(Color.getLightGray());
        textFragment2.getTextState().setForegroundColor(Color.getBlue());

        // 创建文本片段
        TextFragment textFragment3 = new TextFragment("还有更多文本...");
        // 设置文本属性
        textFragment3.getTextState().setFontSize(12);
        textFragment3.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
        textFragment3.getTextState().setBackgroundColor(Color.getLightGray());
        textFragment3.getTextState().setForegroundColor(Color.getBlue());
        textFragment3.getTextState().setUnderline(true);

        paragraph.appendLine(textFragment1);
        paragraph.appendLine(textFragment2);
        paragraph.appendLine(textFragment3);
        // 创建 TextBuilder 对象
        TextBuilder textBuilder = new TextBuilder(pdfPage);
        // 将文本片段添加到 PDF 页面
        textBuilder.appendParagraph(paragraph);
    }
    // 保存文档
    pdfDocument.save(_dataDir + "TextFragmentTests_Rotated4_out.pdf");
}