首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过滤掉PDF格式中除了交互式表单字段之外的任何内容

过滤掉PDF格式中除了交互式表单字段之外的任何内容
EN

Stack Overflow用户
提问于 2019-10-10 19:34:01
回答 1查看 49关注 0票数 0

我正在寻找一种方法来过滤除PDF文件中的交互式表单字段之外的所有对象。编程语言并不是很重要,但是如果我可以通过Linux命令行完成它,但我对任何事情都很开放,它会很高兴的。例如,选择一个pdf输入文件,并输出一个新的pdf文件,只包含第一个交互表单字段。

最终的目标是能够接受一个已经打印但未填充的表单,并且只将填充的表单字段的内容打印到它上。

我得到的最接近的方法是使用鬼怪脚本:

代码语言:javascript
复制
gs -o outfile.pdf -sDEVICE=pdfwrite -dFILTERTEXT -dFILTERIMAGE infile.pdf

但在我的例子中,这仍然留下了很多线条,尽管有-dFILTERIMAGE,但还是有一张图片。还有一个-dFILTERVECTOR-option,但遗憾的是,它也删除了表单字段。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-30 11:36:58

我正在寻找一种方法来过滤除PDF文件中的交互式表单字段之外的所有对象。

首先,您必须摆脱静态页面内容。使用任意通用的pdf库,您可以通过清除每一页的内容条目来做到这一点。

例如,使用iText7的Java版本,可以这样做:

代码语言:javascript
复制
try (
    PdfReader pdfReader = new PdfReader(SOURCE);
    PdfWriter pdfWriter = new PdfWriter(RESULT);
    PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter)
) {
    for (int pageNr = 1; pageNr <= pdfDocument.getNumberOfPages(); pageNr++) {
        PdfPage pdfPage = pdfDocument.getPage(pageNr);
        pdfPage.getPdfObject().remove(PdfName.Contents);
        pdfPage.getPdfObject().setModified();
    }
}

(https://github.com/mkl-public/testarea-itext7/blob/master/src/test/java/mkl/testarea/itext7/content/RemoveContent.java#L38 test testRemoveAllPageContentStreams__)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58329971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档