2

我正在编写一个程序来使用 Python 的Reportlab库生成 PDF 文件。基本上我有两个要求:

  1. 网页版:RGB 颜色,150 dpi
  2. 打印版本:CMYK 彩色,300 dpi

到目前为止,我已经生成了 pdf 并将 Color 设置为 CMYK / RGB。但我无法更改 pdf 文件的 DPI。reportlab 是否提供任何将 dpi 设置为指定的功能。

此外,任何可以在Linux终端上运行的程序在生成pdf后转换DPI也可以接受。

4

1 回答 1

4

规范的 PDF 没有原生 DPI - 它主要是基于矢量的(未矢量化的通常是您放入其中的光栅化的内容)。您嵌入的 AKA 图像将被光栅化(除非您的图像是矢量/svg)。另一方面,pdf 渲染器确实具有“dpi”设置。例如,您可以在 adobe reader 中更改默认的“dpi”(或 pt-pi/points per inch)(我见过的大多数渲染器都支持这一点)。

更改 Adob​​e Reader 设置

如果您想要 300+ 'dpi' 进行打印,并且您拥有所有基于矢量的内容,请不要担心 - 打印店只是在其末端调整 dpi 和 'bam!' 即时 300+ dpi(理论上他们可以选择无限高的渲染 dpi - 基于矢量的技术的荣耀)。

如果您有光栅化的图像,那么您需要进行一些前期数学运算以将 dpi 转换为点,其中点与实际测量值相关,而与您正在查看的媒体无关。为了让事情更容易,这是 1:1 的关系(见这里, drawImage())一般来说,如果你想在打印机上达到 300dpi,并且你有一个你知道你想要拉伸 300 点的图像,并且你的图像当前设置为 600 dpi,那么你知道你需要将图像嵌入到它当前大小的 1/2 尺寸(可以由 drawImage() 控制,它接受宽度/高度 kwargs)。或者,如果您有一个较小的图像并尝试放大尺寸,这就像在气球的表面上绘图然后给它充气 - 它会以您不想要的方式拉伸/扭曲(也就是最好从大开始并按比例缩小)。

(来源PostScript 参考第 12 页)

光栅输出设备的分辨率是对沿两个线性维度的每单位距离的像素数的度量。分辨率通常(但不一定)在水平和垂直方向上相同。制造商对设备技术和价格/性能折衷的决定创建了典型的分辨率范围:

• 计算机显示器的分辨率相对较低,通常为每英寸 75 到 110 像素。
• 点阵打印机的范围通常为每英寸 100 到 250 像素。
• 喷墨和激光扫描静电印刷技术能够实现每英寸 300 到 1400 像素的中等分辨率输出。
• 摄影技术允许每英寸2400 像素或更高的高分辨率。

更高的分辨率产生更好的质量和结果输出的保真度,但成本更高。随着技术的进步和计算成本的降低,产品的分辨率越来越高。

阅读此回复: 以前的图像质量问题

这里还有一个关于该主题的旧线程: reportlab listserv 上的前一个线程

高温高压

于 2013-05-29T15:23:43.663 回答