我一直在尝试使用 LaTeX 生成一些格式良好的文本块,这样我就可以使用 ImageMagick 将它们与图像合成在一起。(我正在为纸牌游戏制作卡片。大部分是图形,但有一些文本块必须看起来比 ImageMagick 更漂亮才能可靠地格式化它们。)
不幸的是,LaTeX 输出的 PDF 的元数据中隐含 DPI 为 72。因此,当我尝试在 ImageMagick 中将它们与 300dpi 图形合成时,它们会变得很小。如果我告诉 ImageMagick 将它们放大,它仍然会以 72dpi 读取它们,然后将其放大,所有文本看起来都像素化得可怕。
使用 mdls,我可能发现元数据中似乎有一个线索:
kMDItemPageHeight = 85.039
kMDItemPageWidth = 141.7319946289062
(这是一份 50mm x 30mm 的文件。起初我认为 kMDItemPageWidth 证明 pdf 是以 72 dpi 编写的。但仔细查看后发现,这个元数据是以点而不是像素为单位设置文档的大小。所以这可能不是我所想的线索。)
我如何让 LaTeX 设置该元数据,或者以其他方式构造 pdf 文件,以便当 ImageMagick 打开它时,它将遵守预期的分辨率是 300 dpi,而不是当前写入元数据的 72 dpi?
答案1
PDF 在元数据中不包含任何 DPI,假定的 72dpi 来自 ImageMagick。您可以通过-density
在 PDF 文件前传递以下内容来指示 ImageMagick 使用其他密度:
# Combines image.png and page.pdf at 72 dpi:
magick composite -geometry +300+300 image.png page.pdf output.png
# Combines image.png and page.pdf with PDF loaded with 300 dpi instead:
magick composite -geometry +300+300 image.png -density 300 page.pdf output.png