当前位置: 首页 > 知识库问答 >
问题:

使用PDFBox或等效库从PDF中删除大型令牌

管弘
2023-03-14

我有一个pdf:S与一个非常大的令牌贴在整个首页的许多pdf文档,见图片。我正在寻找一种自动方法来移除这些。

Apache PDFBox有一个相当广泛的API,有没有办法通过Regex匹配这些令牌,然后简单地删除它们并重新保存PDF?

共有1个答案

林承悦
2023-03-14

您可以使用此答案中的PDFContentStreamEditor类(不要忘记应用答案底部提到的修复程序),如下所示:

try (   PDDocument document = ...   ) {
    PDPage page = document.getPage(0);
    PdfContentStreamEditor editor = new PdfContentStreamEditor(document, page) {
        @Override
        protected void write(ContentStreamWriter contentStreamWriter, Operator operator, List<COSBase> operands) throws IOException {
            String operatorString = operator.getName();

            if (TEXT_SHOWING_OPERATORS.contains(operatorString))
            {
                float fs = getGraphicsState().getTextState().getFontSize();
                Matrix matrix = getTextMatrix().multiply(getGraphicsState().getCurrentTransformationMatrix());
                Point2D.Float transformedFsVector = matrix.transformPoint(0, fs);
                Point2D.Float transformedOrigin = matrix.transformPoint(0, 0);
                double transformedFs = transformedFsVector.distance(transformedOrigin);
                if (transformedFs > 50)
                    return;
            }

            super.write(contentStreamWriter, operator, operands);
        }

        final List<String> TEXT_SHOWING_OPERATORS = Arrays.asList("Tj", "'", "\"", "TJ");
    };
    editor.processPage(page);
    document.save(...);
}

(EditPageContent测试TestRemoveBigTextKommersAnnonSelite)

你可以在参考的答案中找到一些解释。

 类似资料:
  • 我需要比较PDF文档,这些文档是用iText创建的。我实际上设法比较了文件,但我发现了一个微小的差异。 当在像Notepad++这样的编辑器中打开PDF文件时,我可以看到文件末尾有这样的东西:

  • 链接到pdf 当我尝试从上面的pdf中提取文本时,我得到了在evince viewer中不可见的文本和可见的文本的混合。此外,一些所需的文本缺少查看器中没有缺少的字符,例如,“FALCONS”中的“S”和许多缺少的“½”字符。我认为这是由于不可见文本的干扰,因为在查看器中突出显示pdf时,可以看到不可见文本与可见文本重叠。 有没有办法去掉不可见的文字?还是有别的解决办法? 代码: 输出(粗体文本为

  • 使用QPDF,您可以简单地从PDF文件中删除限制/加密,如下所示: 我想用Java中的PDFBox做同样的事情: 我已经用尝试过了,但是我不知道所有者密码是什么。QPDF是如何做到这一点的? 示例文档: https://issues.apache.org/jira/secure/attachment/12514714/in.pdf

  • 问题内容: 链接到pdf 当我尝试从上面的pdf中提取文本时,我混合了在evince查看器中不可见的文本和可见的文本。此外,某些所需的文本缺少查看器中未缺少的字符,例如“ FALCONS”中的“ S”和许多缺少的“ 1/2”字符。我认为这是由于来自不可见文本的干扰,因为在查看器中突出显示pdf时,可以看到不可见文本与可见文本重叠。 有没有办法删除不可见的文字?还是有其他解决方案? 码: 输出(粗体

  • 系统中的一些PDF文档是通过扫描创建的,其中包括OCR文本。然而,OCR没有正确执行(西里尔语和拉丁语字符混淆),尽管文档看起来可以搜索,但该信息完全不正确,无法使用。 在Adobe Acrobat Reader DC(或GoogleChrome)中查看PDF文档时,它会正确显示,但在使用PDF. js呈现文档的网页上,OCR文本会显示在前面,而不是原始文本的扫描图形呈现。 这个想法是通过从PDF

  • 我正在从PDF中删除一个带有书签链接的页面。删除页面后,指向此页面的书签链接不再有效。 我没有从PDFBox api中找到一种方法来完成这项工作 有没有办法删除这个书签?有没有办法删除全部书签? 提前感谢