Aspose.pdf for java版本24.11,使用TextFragmentAbsorber查找pdf的第一页中的内容报错

相关代码如下:

private static void pdfStamp(InputStream srcImgInputStream) throws Exception {
License license = new License();
license.setLicense(getLicenseInputStream(LICENSE));
Locale.setDefault(Locale.CHINA);

    try {
        Document document = new Document(srcImgInputStream);

        int size = document.getPages().size();
        for (int i = 1; i <= size; i++) {
            if (i > 1) {
                break;
            }
            Page page = document.getPages().get_Item(i);

            TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(".*test.*");
            TextSearchOptions textSearchOptions = new TextSearchOptions(true);
            textFragmentAbsorber.setTextSearchOptions(textSearchOptions);
            page.accept(textFragmentAbsorber);

            for (TextFragment textFragment : textFragmentAbsorber.getTextFragments()) {
                String originText = textFragment.getText();
                System.out.println(originText);
            }

            TextFragmentAbsorber textFragmentAbsorber2 = new TextFragmentAbsorber(".*test2.*");
            TextSearchOptions textSearchOptions2 = new TextSearchOptions(true);
            textFragmentAbsorber2.setTextSearchOptions(textSearchOptions2);
            page.accept(textFragmentAbsorber2);
            for (TextFragment textFragment : textFragmentAbsorber2.getTextFragments()) {
                String originText = textFragment.getText();
                System.out.println(originText);
            }
        }
    } catch (Exception e) {
        log.error("pdfStamp ex", e);
        e.printStackTrace();
    }
}

@asad.ali 大佬能看看吗?

@asad.ali
JDK版本:
image.png (12.0 KB)

操作系统版本:
image.png (89.7 KB)

需要我提供测试文件吗?

@caii

我们注意到您在 PDF 文档中发现的是英文文本,而不是中文。您可以尝试删除下面的行并再次测试吗?

Locale.setDefault(Locale.CHINA);

另外,请与我们分享完整的堆栈跟踪信息以及示例 PDF 文档。我们将在我们的环境中测试该场景并相应地解决它。

感谢,我尝试了中文也是会报错的,我稍后提供相关信息

你好我分享了我的出问题的文件,可以看看吗?

@caii

我们检查了示例文件,但在其中找不到短语“test”。您实际上想在其中找到什么?

TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber(".*test.*");

你可以理解我有一个服务,用户可以上传文件,我会使用textStamp去加上文字水印,用户可以再次使用加上文字水印的文件上传到服务,所以我会尝试查找一下用户上传的文件是否包含曾经我加上的文本,现在那个文本就是一个串中文,类似这样:有效期为2024-12-13……
@asad.ali

@caii

我们已在内部问题跟踪系统中打开以下新票证,并将根据 Free Support Policies 中提到的条款提供修复。

问题 ID:PDFJAVA-44601

如果您需要优先支持,以及直接联系我们的付费支持管理团队,您可以获取 Paid Support Services

1 Like

@asad.ali 大佬此类问题还有在跟吗?我后续又遇到了其他的pdf执行这个逻辑的时候报NPE异常

@caii

我们担心由于队列中的其他问题,较早记录的票证尚未得到解决。我们将按照先到先得的原则进行调查,一旦有更新,我们将通过此论坛主题通知您。同时,如果您在其他文件上也遇到此问题,请与我们共享这些文件,以便我们也将它们纳入调查中。

1 Like