c# - 从 PDF 中删除文本

标签 c# pdf itext

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

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

    page.GetAsArray(PdfName.CONTENTS);

为我返回 null,在使用 PdfName.Text 和我尝试过的其他一些方法时也是如此。

使用哪个库并不重要,我只是认为 iTextsharp 应该能够做到这一点。但是,如果有其他(免费)解决方案,请提供

编辑:只是为了明确为什么我要从 pdf 中删除所有文本

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

最佳答案

  1. 页面字典的 /Contents 并不总是由数组组成。很明显,如果内容存储为流,则 GetAsArray() 返回 null
  2. 假设您使用 GetAsStream() 并从流中删除了所有文本内容,那么 XObject 中可能仍然有文本内容。该文本不会从内容流中引用,但 iText 无法将 XObject 作为“未使用的对象”删除,因为这些对象仍会从页面字典中的 /Resources 中引用.

请阅读ISO-32000-1找出你做错了什么。

关于c# - 从 PDF 中删除文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674195/

相关文章:

c# - C++ 和 C# 速度测试 - 奇怪的结果

java - 使用 PDFBox 合并 Pdf 文件

java - Android pdf maker 代码错误

c# - iTextSharp : The process cannot access the file. 文件流似乎已关闭

c# - Itextsharp PDFPTable 如何在整个表格周围制作边框

c# - 使用单声道构建 C#,找不到 'Regex.IsMatch' 字段

javascript - 重定向到 ASP MVC 中的另一个页面后,如何使 Toastr Notification 保持事件状态

c# - 用FK关系向数据库插入数据

python - 为什么 matplotlib fill_between 只在 PDF 上绘制边缘线?

java - java IText 中不存在 com.itextpdf.text.pdf.PdfPKCS7 库