【问题标题】:SSRS Set the generated PDFs version to 1.3SSRS 将生成的 PDF 版本设置为 1.3
【发布时间】:2022-01-03 02:06:41
【问题描述】:

我使用的是 SSRS 版本 15.0.1102.897。当我使用此版本生成 PDF 文件时,PDF 被设置为 1.7 版。

我有另一个运行版本 13.0.2216.0 的 SSRS 实例,当我使用此版本生成 PDF 文件时,PDF 设置为版本 1.3。

我遇到的问题是我正在使用 FPDI PDF-Parser Library 将生成的文件合并在一起,但该库仅支持 PDF 版本 1.4 进行合并。

有没有办法强制 v15 SSRS 实例中生成的 PDF 为 PDF 版本 1.3 或 1.4 而不是 1.7?

提前致谢

【问题讨论】:

    标签: php pdf reporting-services pdf-generation fpdi


    【解决方案1】:

    查看 RSReportServer.Config 描述,配置器似乎无法访问(双关)该值。

    您提到的 SSRS 现在专为 1.7 及更高版本中的功能而设计,但可能主要使用 1.3 兼容对象。

    最简单的解决方案可能是使用二进制/十六进制修补程序将 8 个字节的 %PDF-1.7 标头字符串替换为 %PDF-1.3(不要使用 ascii 字符串查找和替换,例如 sed/grep),如果您想尝试你需要https://sourceforge.net/projects/bbe-或其他等同于hexdump的肮脏方式,然后修改hex2bin并验证文件大小没有字节变化(甚至没有一个字节+/-,因为预告片会损坏)

    但不能保证任何 1.5 或更高版本的对象都不会破坏 FPDI,因此为了获得最佳兼容性,您可以通过 Ghostscript 将其解析为“下级”

    更多详情请查看相关问题和旧链接https://stackoverflow.com/a/51002675/10802527

    请点击标志性博客的链接,但现代命令行可能更短,因此请尝试传统的

    <?php
    exec('gs -sDEVICE=pdfwrite -o="'.$srcfile_new.'" "'.$srcfile.'"'); 
    ?>
    

    并尝试使用 9.55 附加 -dNEWPDF 进行比较

    【讨论】:

      【解决方案2】:

      PDF 版本已更新为您使用 FPDI 从中导入页面的最高 PDF 版本。

      如果您想将其保留为 PDF 1.3 或 PDF 1.4,您必须确保您从中导入页面的 PDF 文档没有更高版本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-21
        • 1970-01-01
        • 2023-04-07
        • 2011-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多