我正在寻找一种方法来过滤除PDF文件中的交互式表单字段之外的所有对象。编程语言并不是很重要,但是如果我可以通过Linux命令行完成它,但我对任何事情都很开放,它会很高兴的。例如,选择一个pdf输入文件,并输出一个新的pdf文件,只包含第一个交互表单字段。
最终的目标是能够接受一个已经打印但未填充的表单,并且只将填充的表单字段的内容打印到它上。
我得到的最接近的方法是使用鬼怪脚本:
gs -o outfile.pdf -sDEVICE=pdfwrite -dFILTERTEXT -dFILTERIMAGE infile.pdf但在我的例子中,这仍然留下了很多线条,尽管有-dFILTERIMAGE,但还是有一张图片。还有一个-dFILTERVECTOR-option,但遗憾的是,它也删除了表单字段。
发布于 2019-10-30 11:36:58
我正在寻找一种方法来过滤除PDF文件中的交互式表单字段之外的所有对象。
首先,您必须摆脱静态页面内容。使用任意通用的pdf库,您可以通过清除每一页的内容条目来做到这一点。
例如,使用iText7的Java版本,可以这样做:
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__)
https://stackoverflow.com/questions/58329971
复制相似问题