1

在将文本写入 PDF 的过程中,我使用 TextFragment 来设置各个字段的属性。如何使用循环而不是单独设置每个字段?

我现在的代码:

TextFragment a = new TextFragment("Hi!");
        tf.setPosition(dropDown);
        tf.getTextState().setFont(new FontRepository().findFont("Arial"));
        tf.getTextState().setFontSize(10.0F);
            .
            .
            .
    TextFragment n = new TextFragment("n");
            tf.setPosition(dropDown);
            tf.getTextState().setFont(new FontRepository().findFont("Arial"));
            tf.getTextState().setFontSize(10.0F);

我需要这样的东西:

some loop {
.
.
TextFragment txtFrag = new TextFragment(A);
        tf.setPosition(dropDown);
        tf.getTextState().setFont(new FontRepository().findFont("Arial"));
        tf.getTextState().setFontSize(10.0F);

} //This should set properties for all fields

所有字段的字符串TextFragment("String")都不相同。不同的表单域是不同的。

4

1 回答 1

1

您可以简单地在 PDF 文件中添加文本片段,完成添加文本后,您可以使用以下代码为 PDF 文件中的所有文本片段获取或设置不同的属性:

// Load document
Document document = new Document( dataDir + "input.pdf");

// Create TextAbsorber object to extract all textFragments
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber();

// Accept the absorber for first page of document
document.getPages().accept(textFragmentAbsorber);

// Get the extracted text fragments into collection
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments();

// Loop through the Text fragments
for (TextFragment textFragment : (Iterable<TextFragment>) textFragmentCollection) {
    // Iterate through text fragments
    System.out.println("Text :- " + textFragment.getText());
    textFragment.getTextState().setFont(new FontRepository().findFont("Arial"));
    textFragment.getTextState().setFontSize(10.0F);
    System.out.println("Position :- " + textFragment.getPosition());
    System.out.println("XIndent :- " + textFragment.getPosition().getXIndent());
    System.out.println("YIndent :- " + textFragment.getPosition().getYIndent());
    System.out.println("Font - Name :- " + textFragment.getTextState().getFont().getFontName());
}

// Save generated document
document.save(dataDir + "input_17.12.pdf");

您可以访问处理文本以获取更多信息。我希望这会有所帮助。如果您需要任何进一步的帮助,请告诉我们。

我与 Aspose 一起担任开发人员宣传员。

于 2018-01-22T21:18:34.147 回答