当我将位图图像添加到我的 PDF 文件(使用pdflatex
和graphicx
包创建)中时,我总是手动检查分辨率是否合适(我的目标是 200 到 300 dpi 之间)。我刚刚意识到手动操作很可惜,而 LaTeX 实际上知道图像的像素大小及其在纸上的最终大小。
当包含的位图图像的分辨率超出某些范围时,LaTeX 是否会发出警告?
答案1
LaTeX 既不知道纸张的分辨率,也不知道纸张的最终尺寸:
\includegraphics
.log
使用驱动程序在文件中打印请求的尺寸pdftex.def
:Package pdftex.def Info: foobar.png used on input line 5. (pdftex.def) Requested size: 67.0pt x 89.0pt.
但
\includegraphics
可以放在\scalebox
或\resizebox
里面。因此 最终的纸张上的尺寸未知,何时\includegraphics
执行。终端输出和
.log
文件还包含类似以下内容:<foo.png, id=1, 12pt x 34pt>
这是由 pdfTeX 的驱动程序部分打印的。如果图像被 pdfTeX 包含且没有进一步缩放,那么图像的大小就是图像的自然大小。
\pdfimageresolution
仅当图像不包含分辨率数据时才会考虑。
可以做什么:
通过脚本读取
.log
文件,该脚本采用自然大小、请求大小和图像文件名。然后它可以计算比例因子并将其应用于分辨率。脚本通过运行外部程序(例如file
在 Linux 中)或分析图像来获取分辨率。但这种方法不会检测后续的缩放。软件包
bmpsize
分析位图图像。其中的方法可用于在 TeX 宏级别获取分辨率。软件包本身在 PDF 模式下终止 pdfTeX,最初是因为不需要计算图像的大小,PDF 模式下的 pdfTeX 已经能够自行完成。同样,后续缩放很难跟踪。直接解析 PDF 文件。然后可以跟踪当前传输矩阵的设置并将其应用于位图图像数据的分辨率。此外,此方法还可以找到 PDF 表单 XObjects 中的图像,而以前的方法无法找到这些图像(pdfTeX 可以包含包含位图图像的 PDF 文件)。