我正在使用 svg 包来包含一个带有透明 3D 图形和乳胶代码的 svg 文件,以便设置在正确的标签位置。我尝试了许多不同的方法来做到这一点(matlab->eps+tex 文件),其中总是将位图图形包含在矢量图形(eps)中,但没有一种方法表现良好。我认为从位图到矢量图形的转换有时会出现问题,因为我在图像上有规则的白色/空白线图案。
现在,在使用 matlab2svg 解决了这个问题并导入 svg 包生成的 pdf 之后,\includesvg
我遇到了文件大小相当大以及相应页面上最终 pdf 渲染速度很慢的问题。
现在我想也许可以改变 svg 包,使其生成的中间 pdf 不是矢量图形,而是高分辨率位图 pdf(比如说 600dpi)。这应该会减小最终文件大小,并在查看时增加 pdf 渲染。
有人能告诉我这是否可行,以及我如何找到这个解决方案吗?也许这只是一个选项的改变,仅此而已。我的目标是拥有一个相当直接的自动化工作流程,到目前为止,尽管生成的文件大小不一,但 svg 工作流程对我的图形来说是最好的。
希望得到一些建议。向乳胶极客致以最诚挚的问候!
答案1
除非有人在 TeX 中找到方法,否则您可以在 matlab-export-workflow 中在 TeX 之外对 PDF 矢量图形进行栅格化,或者在 TeX-import-workflow 中从 TeX 文档内的 shell-escape 进行栅格化。
许多工具都可以栅格化矢量文件。ImageMagick、GraphicsMagick、Inkscape、GhostScript……以及Xpdf
我更喜欢的。您可以在这里找到所有重要系统的预编译二进制文件:http://www.foolabs.com/xpdf/download.html.pdftoppm 是您需要的 xpdf 包内的程序。
pdftoppm version 3.03
Copyright 1996-2011 Glyph & Cog, LLC
Usage: pdftoppm [options] <PDF-file> <PPM-root>
-f <int> : first page to print
-l <int> : last page to print
-r <int> : resolution, in DPI (default is 150)
-mono : generate a monochrome PBM file
-gray : generate a grayscale PGM file
-freetype <string>: enable FreeType font rasterizer: yes, no
-aa <string> : enable font anti-aliasing: yes, no
-aaVector <string>: enable vector anti-aliasing: yes, no
-opw <string> : owner password (for encrypted files)
-upw <string> : user password (for encrypted files)
-q : don't print any messages or errors
-cfg <string> : configuration file to use in place of .xpdfrc
-v : print copyright and version info
-h : print usage information
-help : print usage information
--help : print usage information
-? : print usage information
您可以启用或禁用抗锯齿功能,选择页面和分辨率(DPI)。我建议为所有内容启用 AA
之后,你可以使用你选择的工具将未压缩的位图文件转换为 .png 或 .pdf 格式(对我来说是 nconverthttp://www.xnview.com/en/nconvert/)。