PDFsharp 无法从 Crystal 报告 CR23 编码文档中读取文本

PDFsharp cannot read text from Crystal Reports CR23-encoded documents

我们正在使用 Crystal Reports、C# 和 PDFsharp 来生成个人用户的 PDF 文档。 Crystal Reports 首先用于创建包含所有用户条目的单一整体 PDF 文档,每个用户各自的部分用文本描述 "tags." 然后,C# 程序通过提取从整体生成单独的 PDF使用 PDFsharp 搜索其文本,搜索标签,然后从每个标签间部分生成 PDF。

此过程多年来运行良好,但从 Crystal Reports Service Pack 23 开始,生成的 PDF 的编码不再可被 PDFsharp 读取,因此无法找到标签。 (如果这些文档在 Chrome 或 Firefox 中呈现,则从这些文档复制时不会出现此类问题。)

是否可以在 Crystal 报告中更改设置以恢复旧编码,或者我们必须修改 PDFsharp 或使用不同的 PDF 处理库?

SP16 生成的 PDF 使用 WinAnsi 编码,但 SP23 生成的 PDF 使用 Unicode。 SAP 表示 Crystal 报告中没有强制编码为 WinAnsi 的设置。

解决此问题需要将 ToUnicode CMap-retrieval 添加到 PDFsharp 并在运行时使用 CMap 将每个 CString 文本索引映射到其对应的 Unicode 字符。

我发布了这个答案,但它被删除了。我不知道为什么,因为它解决了一个明确的问题:"or must we either modify PDFsharp or use a different PDF processing library?" 我对建议的图书馆没有经济利益!我不是它的开发者。我只用它。 也许无论谁决定删除,都懒得阅读整个问题。


考虑使用不同的库。我使用 Quick PDF 库(Foxit,以前称为 Debenu)在 Crystal 导出中按标签进行 PDF 拆分。它适用于从任何版本 Crystal 导出的 pdf,包括最新的运行时。