当前位置: 首页 > 知识库问答 >
问题:

使用SSRS / ReportViewer创建PDF时,PDF的字体替换规则?

慕宏峻
2023-03-14

为了减小从SSRS和ReportViewer控件导出的PDF文件的大小,影响PDF大小的主要因素之一是完全和子集字体嵌入。

最终,我们决定只使用Arial和泰晤士报新罗马字体的变体(大小、粗体、斜体字等)来标准化我们的报告——幸运的是,我们的大多数报告都是公司死亡的电子表格费用,不需要美学吸引力。

在PDF创建过程中,这些字体似乎会被ReportViewer/SSRS替换为14种PDF“标准允许字体”之一(因为大多数Windows机器上通常不会安装标准字体)。

所以我的问题是,ReportViewer上的PDF渲染器在字体替换期间使用的规则到底是什么,而不是在PDF中嵌入字体?

基于这个网站,经过一些试验和错误,似乎可以进行以下替换(从RDL到PDF,列表不完整):

  • Times新罗马=

我曾认为替换是因为字体嵌入的合法性而被迫的,但Times New Roman和Arial都是“可编辑的”,据我所知,这是限制最少的。

共有1个答案

冯阳成
2023-03-14

呈现 pdf 时需要满足一些条件。

我怀疑这里列出的一个参数没有满足,并将您的字体转换为最接近的字体。

>

  • 确保字体安装正确,字体嵌入被授权;和

    字体必须是true type字体。

  •  类似资料:
    • 早上好 我有一个新手PDFbox的问题,我希望一些帮助... 我刚刚(上周)从github下载了最新的PDFbox源代码,正在尝试创建HelloWorldOTF。java,基于HelloWorldTTF。java示例,希望创建一个PDF文件,该文件使用OTF字体(本例中为Adobe Caslon Pro Regular)将文本添加到输出PDF中。 到目前为止,我有以下信息: 我可以使用以下代码加载

    • null 有人能解释一下,当我使用PdfReader阅读模板后,我如何制作模板的副本吗?有没有办法把表格写到模板副本上,而不是一个新文档上? 为了将来的参考,我做了以下工作:

    • 我用iText创建了一个pdf,我想打开它,但是当我这样做时,Adobe阅读器说我“打开文档时出错。此文件已打开或由其他应用程序使用“。我该如何解决? 这是我的代码(抱歉休斯顿println异常;)):

    • 我正在将一些PDF编辑工具从iTextSharp更新到iText7。 在iTextSharp中,pdfStamper类中有一个方法:pdfStamper。ReplacePage()。然而,iText7中的pdfStamper类已被删除,我在复制相同的功能时遇到困难。 假设我有文档X,需要用文档Y的第1页替换第4页,但我希望结果保存到一个新的文档Z。 到目前为止,我有3行使用CopyPageTo方法

    • 我正在开发一个web应用程序,并试图使用它的文本创建一个pdf文档。 当我得到一个路径(本地和服务器上)时,它工作得很好,但我知道我需要在不实际创建它的情况下完成它。 我不想要的:PdfCopy copy=newpdfcopy(documentPDF,newfileoutputstream(mypath)) 我想要的是://PdfCopy copy=new PdfCopy(documentPDF,

    • 现在让我们了解如何使用PDFBox库创建PDF文档。 创建空PDF文档 您可以通过实例化PDDocument类来创建空PDF文档。 您可以使用Save()方法将文档保存在所需的位置。 以下是创建空PDF文档的步骤。 第1步:创建一个空文档 属于包org.apache.pdfbox.pdmodel的PDDocument类是PDFDocument的内存中表示形式。 因此,通过实例化此类,您可以创建一个