0

我正在开发一个 C# 控制台应用程序,该应用程序旨在编辑现有 PDF 文件中的文本样式,例如将文本样式更改为粗体或斜体或添加字体系列、更改文本颜色...

我使用了 iTextSharp 库,但遇到了以下问题:

  1. PDF 文档中的细空间被修剪。
  2. 从现有文档中提取文本时,文本样式被完全忽略(我的意思是字体、粗体、斜体......)
  3. 从 PDF 文件中提取内容时不读取特殊格式的数学、图像和文本

是否有任何其他库或任何建议来编辑上述 PDF 文件?

4

1 回答 1

1

关于你遇到的问题的一些话......

1 PDF 文档中的细空间被修剪。

细空间通常是通过水平坐标偏移产生的。不幸的是,同样的技术也用于字距调整,即使相邻字符看起来更好。如果在解析页面时遇到这样的水平偏移,解析器必须试探性地做出决定,有时是错误的。对于您的文档,这种启发式方法似乎失败了。

2 从现有文档中提取文本时,文本样式被完全忽略(我的意思是字体、粗体、斜体..等)

那是RenderListener你使用的问题。与 iText(Sharp) 捆绑的侦听器当前专注于文本。它们可以很容易地扩展到传输字体信息。

但是,您应该知道,PDF 不知道粗体、斜体等。在质量好的文档的情况下,xxx 和 xxx 粗体是单独的字体,而在质量较差的文档的情况下,可能会生成穷人的粗体通过以微小的偏移量打印字形两次,或者可以通过适当的倾斜变换矩阵生成倾斜的外观。

3 从PDF文件中提取内容时不读取特殊格式的数学、图像和文本

如果您有这方面的样品,请在此处或itext-questions 邮件列表中提供。可以肯定的是,您已经实现了一个RenderListener在测试时侦听图像事件的方法?

因此,1 是一个一般问题,可能有更好的算法,但不能以 100% 安全的方式解决。2 仅要求您基于现有的纯文本之一实现适当的 RenderListener;实际上有很多关于RichTextExtractionStrategy为 iText 创建一个的讨论。但是,必须对 3 进行更严格的检查。

从本质上讲,iText(Sharp)并不是唯一一个具备文本解析能力的PDF库,它们各有各的优势。不过,它确实提供了一个框架,可用于从文档文本样式中检索尽可能多的信息。

我正在开发一个 C# 控制台应用程序,该应用程序旨在编辑现有 PDF 文件中的文本样式,例如将文本样式更改为粗体或斜体或添加 font-family ,更改文本颜色...等。

考虑到同一字体系列中的不同字体或不同样式可能具有显着不同的宽度,这是一项了不起的壮举。这可能会导致外观难看或需要重排文本,而这并不是 PDF 真正适合的。

于 2012-11-21T23:28:08.667 回答