如何避免 PDF 文件中的字体替换

How to avoid font substitutions in PDF files

我写这个问题是不得已的办法,因为上周我一直在努力寻找解决方案,但我想不出任何解决方案。

工作流程

有SSRS根据相应的.rdl文件和从数据库中检索到的数据生成的PDF文件。我制作了一个应用程序,简而言之,它将这些 PDF 文件分组并将它们合并为一组。为了合并文件,我使用 PdfSharp 库。

问题

PDF 文件不包含嵌入字体。这会导致文档打印过程中出现问题,因为无法正确打印非拉丁字符。更具体地说,.rdl 文件仅包含 Arial 字体系列的文本框。但是,SSRS 生成的 PDF 使用的是 Helvetica(Adobe Reader 将其转换为 Arial,但打印机有问题)。

我想要达到的目标

我想让我的输出 PDF 只包含嵌入字体。

到目前为止我尝试了什么

我尝试将 .rdl 文件中的字体更改为不会被替换的字体(例如 Calibri 或 Liberation Sans)。然而,这会导致报告的 'construction' 变为 'crash' - 多个元素不在应有的位置。

阅读了 Microsoft 论坛上的多个主题后,我发现字体替换问题在 SSRS 2008 中很常见,不幸的是,该问题尚未解决,而且似乎没有解决方法,更不用说解决方案了。

我的问题

您知道让我的输出 PDF 文件仅包含嵌入字体的方法吗?也许可以通过修改 .rdl 文件来实现,也许有办法通过 PdfSharp 或其他一些库来实现?

最后我使用了GhostScript来嵌入字体,正如解释的那样in this answer

"C:\Program Files\gs\gs9.21\bin\gswin64c.exe" \
    -o outputPdf.pdf \
    -sDEVICE=pdfwrite \
    -dPDFSETTINGS=/prepress \
    -sFONTMAP=myFontMap.txt \
    inputPdf.pdf