【发布时间】:2017-09-05 22:22:28
【问题描述】:
如何批量删除 PDF 中的多个文本框?
场景是我有许多 PDF 文档,每个页面的顶部和底部都有一个文本框,我想删除它们。我可以使用 Master PDF Editor 等软件手动执行此操作,但文档有 500 多页,而且我有几个文档要处理。我很确定这些是文本框,而不是页眉/页脚。
有什么想法吗?
【问题讨论】:
标签: pdf
如何批量删除 PDF 中的多个文本框?
场景是我有许多 PDF 文档,每个页面的顶部和底部都有一个文本框,我想删除它们。我可以使用 Master PDF Editor 等软件手动执行此操作,但文档有 500 多页,而且我有几个文档要处理。我很确定这些是文本框,而不是页眉/页脚。
有什么想法吗?
【问题讨论】:
标签: pdf
简单,
将 iText7 与 pdfSweep 结合使用。 iText 是一个 PDF 工具包,可让您从 PDF 文档中创建、编辑和提取信息。
pdfSweep(顾名思义)为 iText 提供编辑功能。 您可以在给定矩形(以及很快的正则表达式)的情况下编辑特定页面或页面范围内的内容。
pdfSweep 然后将删除所有落在给定矩形内的内容。
您也可以简单地创建编校注释,然后让 Adobe Reader 批量删除它们。 iText 还支持创建编辑注释。
using (Stream stream = new FileStream(
fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
PdfReader pdfReader = new PdfReader(stream);
using (PdfStamper stamper = new PdfStamper(
pdfReader, new FileStream(newFileName, FileMode.OpenOrCreate))) {
int page = 1;
iTextSharp.text.Rectangle rect =
new iTextSharp.text.Rectangle(500, 50, 200, 300);
PdfAnnotation annotation = new PdfAnnotation(stamper.Writer, rect);
annotation.Put(PdfName.SUBTYPE, new PdfName("Redact"));
annotation.Title = "My Author";
annotation.Put(new PdfName("Subj"), new PdfName("Redact"));
float[] fillColor = { 0, 0, 0 };
annotation.Put(new PdfName("IC"), new PdfArray(fillColor));
float[] fillColorRed = { 1, 0, 0 };
annotation.Put(new PdfName("OC"), new PdfArray(fillColorRed));
stamper.AddAnnotation(annotation, page);
}
}
iText 和 pdfSweep 在 java 或 C# 中可用。
iText 网站上有一个相当全面的示例,说明如何生成编辑注释: http://developers.itextpdf.com/question/how-create-and-apply-redactions
【讨论】:
在 Adobe Acrobat 中做起来并不难,也不需要第三方软件。打开 Acrobat 窗口右侧的注释下拉菜单。在那里,您可以看到包含文档中所有文本框的列表。现在,使用 Control 或 Shift 键 + 鼠标左键选择要删除的所有文本框,以最适合您的需要。如果要全部删除,左键单击列表中的第一个项目,然后将列表向下滚动到底部,按住 Shift 键并左键单击底部的项目。然后最后使用鼠标右键选择删除。现在他们走了。
【讨论】: