我正在编写一个使用Python Reportlab库生成PDF文件的程序。基本上我有两个要求:
到目前为止,我已经生成了pdf并将Color设置为CMYK / RGB。但我无法更改pdf文件的DPI。 reportlab是否提供将dpi设置为指定的任何函数。
此外,还可以接受任何可以在Linux终端上运行以在生成pdf后转换DPI的程序。
答案 0 :(得分:4)
按照规范的PDF没有原生DPI - 它主要是所有基于矢量的(没有矢量通常是你放在那里光栅化的)。嵌入的AKA图像将被栅格化(除非您的图像是vector / svg)。另一方面,pdf渲染器确实具有'dpi'设置。例如,您可以更改adobe reader中的默认“dpi”(或pt-pi /每英寸点数)(我见过的大多数渲染器都支持此功能)。
如果您想要300+'dpi'进行打印,并且您拥有所有基于矢量的内容,请不要担心 - 打印店只调整其末端的dpi和'bam!'瞬间300+ dpi(理论上他们可以选择无限高的渲染dpi - 基于矢量的技术的荣耀)。
如果你有光栅化的图像,那么你需要做一些前期数学运算来将dpi转换为点,其中点与真实世界的测量值有关,无论你看到什么媒体。为了方便起见,它是1:1的关系(参见here,drawImage())一般情况下,如果你想在打印机上使用300dpi,并且你有一个你知道想要伸展300点的图像,那么当前图像设置为600 dpi然后你知道你需要将图像嵌入其当前尺寸的1/2尺寸(可以通过drawImage()控制它接受宽度/高度kwargs)。或者,如果你有一个较小的图像,并尝试向上扩展尺寸,它就像在气球表面上绘制然后膨胀它 - 它会以你不想要的方式拉伸/扭曲(也称为更好地开始大规模并缩小规模)。
(来源PostScript Reference第12页)
光栅输出设备的分辨率是数量的度量 沿两个线性尺寸的每单位距离的像素。 分辨率通常 - 但不一定 - 水平相同 垂直。制造商对设备技术和设备的决策 价格/性能权衡创造了特征范围 分辨率:
•电脑显示器的分辨率相对较低, 通常为每英寸75至110像素 •一般的点阵打印机 范围从每英寸100到250像素 •喷墨和激光扫描 静电印刷技术具有中等分辨率 输出每英寸300至1400像素 •摄影技术允许每英寸2400像素或更高的高分辨率。
更高的分辨率可以提高输出的质量和质量, 但是以更高的成本实现。随着技术的进步和改进 计算成本降低,产品演变为更高的分辨率。
阅读此回复:previous image quality question
以下是关于该主题的旧主题:previous thread on reportlab listserv
HTH