【问题标题】:On the fly pdf creation with 16bit colour depth png support in php在 php 中使用 16 位颜色深度 png 支持动态创建 pdf
【发布时间】:2023-12-12 04:08:01
【问题描述】:

我正在尝试在应用程序中动态创建 pdf 文档,即用户单击链接,然后向他们显示 pdf 文档,其中包含一些文本和一些图像。

我目前正在使用支持 24 位(真彩色)png 的 FPDF v1.6 (http://www.fpdf.org/),但我遇到的问题是这是一个遗留应用程序,并且有 1000 个 16 位颜色深度的 FPDF不支持,由于应用程序的其他部分使用这些图像,我不能简单地转换。

我看到的唯一解决方案是:

  1. 即时转换 16 位 png 图像并将其嵌入到 pdf 中。
  2. 找到一个可以接受 16 位颜色深度 png 的新类 pdf 类。

有人有什么想法吗?

【问题讨论】:

    标签: php png pdf-generation 16-bit


    【解决方案1】:

    也许您可以尝试使用TCPDF(从未将它用于 16 位 PNG,但它应该很容易测试)。

    【讨论】:

    • 感谢尝试,它成功了。但是发现了另一种解决方法,涉及使用已经就位的类。
    【解决方案2】:

    在 python 中修复了这个问题:

    def fix_16_bit_depth_not_supported(raw_image_path):
        """
        fix
        RuntimeError: FPDF error: 16-bit depth not supported: test.png
        """
        new_file, filename = tempfile.mkstemp(suffix='.png')
        os.close(new_file)
        i = cv2.imread(raw_image_path, cv2.IMREAD_UNCHANGED)
        img = np.array(i, dtype=np.float32)
        convert = img / 255.
        cv2.imwrite(filename, convert)
        return filename
    

    【讨论】: