我们正在使用Crystal Reports,C#和PDFSharp由单个用户生成PDF文档。首先使用Crystal Reports创建带有所有用户条目的单个整体式PDF文档,每个用户的相应部分都用文本“标签”划定。然后,C#程序通过使用PDFSharp提取其文本,搜索标签,然后从标签之间的每个部分生成PDF,来从整体中生成单个PDF。
此过程可以正常工作很多年,但是从Crystal Reports Service Pack 23开始,PDFSharp不再可读生成的PDF的编码,因此找不到标签。 (如果这些文档是在Chrome或Firefox中呈现的,则从这些文档进行复制时不会发生此类问题。)
是否可以在Crystal Reports中更改设置以恢复旧的编码,还是必须修改PDFSharp或使用其他PDF处理库?
答案 0 :(得分:1)
我发布了此答案,但已将其删除。考虑到一个明确的问题,我不知道为什么:“还是我们必须修改PDFsharp 或使用其他PDF处理库?” 我对建议的图书馆没有任何经济利益!我不是它的开发商。我只用它。 也许无论谁决定删除,都不会理会整个问题。
考虑使用其他库。我使用Quick PDF库(Foxit,以前称为Debenu)在Crystal导出中按标签进行PDF拆分。它适用于从任何版本的Crystal(包括最新的运行时)导出的pdf。
答案 1 :(得分:0)
SP16生成的PDF使用WinAnsi编码,而SP23的PDF使用Unicode。 SAP表示,Crystal Reports中没有设置将编码强制为WinAnsi。
要解决此问题,需要将ToUnicode CMap检索添加到PDFsharp中,并在运行时使用CMap将每个CString文本索引映射到其对应的Unicode字符。