o4t*_*ulz 5 pdf wolfram-mathematica export figures
我正在使用Mathematica绘制我需要的一些数字,然后在Latex中将它们用作pdf.
问题是Mathematica使用Acrobat 5.x设置兼容性导出数字,我认为这导致数字很大,没有优化,当我在最终的pdf中有几个时,有时只需要几分钟就可以打印一个最终文件的页面.
有没有办法在Mathematica中更改pdfs的输出设置?我应该导出为pdf,转换为postscripts,然后使用新设置从.ps创建新的pdf?我应该导出.eps并转换为pdf吗?是否有一步通过Mathematica创建优化的pdf?
快速示例(并且有点夸张,因此区别非常明显):从Mathematica导出的pdf(Export ["C:/figure.pdf",%])的大小为1065kb,.pdf - >.ps - >. pdf给出最终文件652kb和.eps - > .pdf文件为610kb.我不会在乳胶中使用任何这些,但它显示了设置的差异.
pdf->ps->pdf这是一个永远会给你较小的文件大小的神话。例如,考虑
(在数学中)
fileName = "test.pdf";
p = DensityPlot[Sin[x] Sin[y], {x, -4, 4}, {y, -3, 3}];
Export[fileName, p];
Run Code Online (Sandbox Code Playgroud)
(在外壳中)
pdf2ps test.pdf && ps2pdf test.ps test1.pdf
Run Code Online (Sandbox Code Playgroud)
test.pdf是 446kB,而test1.pdf在我的机器上是 11.5MB!
通常发生的情况是,当您使用 Mathematica 导出 PDF 文件时,它会存储文本(轴刻度线、标签等)、字体和图像,所有这些都会添加到文件中。如果您有带有大量刻度线/标签的矢量图形,这些图形可能非常重要。这样做pdf->ps->pdf将剥离文件中的字体数据和文本数据,同时压缩图像,这就是您看到文件大小减小的原因。虽然在小放大倍数下无法观察到,但当您放大相当大的尺寸时,您会注意到差异。例如,替换p为
p = Plot[Sin[t], {t, 0, 2 Pi}];
Run Code Online (Sandbox Code Playgroud)
在我的机器上生成 37kB 文件test.pdf和 8kB 文件test1.pdf。8kb 文件的质量比原始文件差(缩放至 600%+ 即可显示这一点)。您可以通过执行以下操作来查看mathematica存储在PDF文件中的纯文本信息
Import[fileName,"Plaintext"]
Run Code Online (Sandbox Code Playgroud)
然而,对于更复杂的 PDF 文件,转换为ps然后再返回pdf不一定是一个好的选择,并且可能会导致文件大小增大。
您可以尝试使用 中的 PDF 选项Export,例如"AllowRasterization"和ImageResolution,甚至可以在保存之前对图像进行光栅化,但我想您已经知道了。
这是一种在mathematica中减少文件大小的快速而肮脏的方法
Export[fileName, First@Import@Export[fileName, p]]
Run Code Online (Sandbox Code Playgroud)
文件大小现在只有 12kB!它只有原件的三分之一,只比从 得到的稍大一点pdf->ps->pdf,并且比 8kB 的质量好得多(尽管与原件不完全相同。在 1200% 及以上的放大倍率下可以看到差异) 。
发生的情况是,在导入和重新导出时,仅保存存储的图像。它的纯文本部分被丢弃,在这个小例子中,这恰好很重要。例如DensityPlot,仅减少到 425kB(仍然是下降而不是增加到 11MB)。
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |