【问题标题】:Edit Text style in pdf document编辑 pdf 文档中的文本样式
【发布时间】:2012-11-21 18:31:59
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这样提取文本格式的文本会很困难,至于第一个任务和第三个任务,我可以建议你一个库Spire.PDF for .NET,它甚至可以读取PDF图像和文本特殊文本,例如从右到左书写的 Herbrew。但是,据我所知,它不支持提取带有字体、粗体等的文本。
  • 似乎是一个有趣的工具,虽然它不是一个非开源工具,但我会试试看,谢谢@michelle

标签: c# pdf itextsharp edit


【解决方案1】:

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

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

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

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

这是您使用的RenderListener 的问题。与 iText(Sharp) 捆绑的侦听器当前专注于文本。它们可以轻松扩展以传输字体信息。

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

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

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

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

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

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

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

【讨论】:

  • 这真的很有帮助@mkl,非常感谢你..我找到了一个提取策略的实现,可以帮助我解决样式问题。我会尽快将我正在处理的示例发送到 itextsharp 邮件列表,再次感谢
猜你喜欢
  • 2012-08-05
  • 2023-03-16
  • 1970-01-01
  • 2018-10-12
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
相关资源
最近更新 更多