从PDF中删除文本

时间:2012-10-01 13:24:16

标签: c# pdf itextsharp

我正在寻找一种从pdf中删除/删除所有文字的解决方案。我已经使用了iTextSharp一段时间了,用它从PDF文件中提取文本很容易(使用OCR)。但是我找不到删除文本的选项。

This solution坦率地说对我不起作用。

    page.GetAsArray(PdfName.CONTENTS);

对我来说也是null,也是在使用PdfName.Text和其他一些我尝试过的时候。

使用的库并不重要,我只是认为iTextsharp应该能够做到这一点。但是,如果有另一个(免费)解决方案,请带上它

编辑:只是为了说明我为什么要删除pdfs中的所有文字

我想减小pdf的大小。我这样做是通过降低pdf中图像的分辨率来实现的。然而,在很多情况下,矢量图像占据了大部分空间。所以我想到了以下几点: 删除所有文本,而不是将剩余的pdf(仅包含图像和矢量)转换为位图(jpeg)。之后,我再次将文本粘贴在上面。 另一种选择是使文本不可见,但我认为这不容易。

3 个答案:

答案 0 :(得分:2)

  1. 页面字典的/Contents并不总是由数组组成。很明显,如果内容存储为流,GetAsArray()会返回null
  2. 假设您使用GetAsStream()并从流中删除了所有文本内容,那么您可能仍然在XObjects中包含文本内容。该文本不会从内容流中引用,但iText将无法将XObject删除为“未使用的对象”,因为仍将从页面词典中的/Resources引用对象。
  3. 请阅读ISO-32000-1,了解您的错误。

答案 1 :(得分:1)

现在你已经更新了你的问题,并揭示了预期措施的动机,让我说实话:

  • 这些措施绝不会减少 PDF的大小。

  • 相反,它们会导致文件大幅增加:

    1. 首先删除文字+字体可能会导致尺寸略有缩小,是的。

    2. 然后将页面的剩余部分转换为位图肯定会大大增加尺寸(或者您同意图像质量非常低,可能?)。

    3. 最后再次'粘贴'文字会再次增加文件大小(很可能与您在第一步中保存的数量相同)。

这根本不是一个好计划。

如果您提供(链接)您的典型示例PDF文件之一,我可能会想出一个开箱即用的Ghostscript(以及其他工具)命令行,并且可以更有效地缩小PDF大小。

答案 2 :(得分:0)

要删除PDF中的所有文本,最简单的解决方案是使用ghostcript

gs -o output_no_text.pdf -sDEVICE=pdfwrite -dFILTERTEXT  input.pdf