我正在开发一个C#控制台应用程序,用于编辑现有PDF文件中的文本样式,例如将文本样式更改为粗体或斜体或添加font-family,更改文本颜色......
我使用了iTextSharp库,但遇到了以下问题:
是否有其他库或任何建议如上所述编辑PDF文件?
答案 0 :(得分:1)
关于你遇到的问题的一些话......
1裁剪PDF文档中的细小空格。
通常通过水平坐标移位生成薄空间。不幸的是,相同的技术用于字距调整,即使相邻字符看起来更好。如果在解析页面时遇到这样的水平移位,则解析器必须启发式地决定并且有时是错误的。在您的文档中,这种启发式方法似乎失败了。
2从现有文档中提取文本时,文本样式完全被忽略(我的意思是字体,粗体,斜体等等)
这是你使用RenderListener
的问题。与iText(夏普)捆绑在一起的听众目前专注于文本。它们可以很容易地扩展为传输字体信息。
你应该知道,PDF不知道粗体,斜体等。如果文件质量好,xxx和xxx粗体是单独的字体,如果质量较差的文件,一个穷人的粗体可以通过以微小偏移打印字形两次来生成,或者可以通过适当的偏斜变换矩阵生成倾斜的外观。
从PDF文件中提取内容时,不会读取3种特殊格式的数学,图像和文本
如果您有此样品,请在此处或itext-questions mailing list上提供。可以肯定的是,您已经实现了RenderListener
,在测试时会监听图像事件吗?
因此,1是一个普遍的问题,可能有更好的算法,但不能以100%安全的方式解决。 2只需要你基于一个现有的纯文本实现一个合适的RenderListener;实际上有很多关于为iText创建RichTextExtractionStrategy
的讨论。但是,必须更加强烈地检查3。
从本质上讲,iText(夏普)并不是唯一具有文本解析功能的PDF库,它们每个都分别具有自己的优势。但它确实提供了一个框架,可用于从文档文本样式中检索尽可能多的信息。
我正在开发一个专为编辑而设计的C#控制台应用程序 现有PDF文件中的文本样式,例如更改文本 样式为粗体或斜体或添加字体系列,更改文本 颜色......等。
考虑到同一字体系列中的不同字体或不同样式可能具有明显不同的宽度,这是相当壮观的。这可能导致丑陋的外观或需要重排文本,这是PDF不太适合的。