5

我正在使用 Mathematica 绘制一些我需要的数字,然后在 Latex 中将它们用作 pdf。

问题是 Mathematica 使用 Acrobat 5.x 设置兼容性导出图形,我认为这会导致图形很大,没有优化,当我在最终的 pdf 中有几个时,有时只需几分钟就可以打印一个最终文件的页面。

有没有办法在 Mathematica 中更改 pdf 的输出设置?我是否应该导出为 pdf,转换为 postscript,然后使用新设置从 .ps 创建新的 pdf?我应该导出 .eps 并转换为 pdf 吗?是否有通过 Mathematica 创建优化 pdf 的一步法?

快速示例(有点夸张,因此差异非常明显):我从 Mathematica 导出的 pdf (Export["C:/figure.pdf", %]) 大小为 1065kb,.pdf ->.ps ->。 pdf 给出 652kb 的最终文件, .eps->.pdf 给出 610kb 的文件。我不会在乳胶中使用任何这些,但它显示了设置的差异。

4

1 回答 1

4

这是一个神话,pdf->ps->pdf总是会给你一个更小的文件大小。例如,考虑

(在数学中)

fileName = "test.pdf";
p = DensityPlot[Sin[x] Sin[y], {x, -4, 4}, {y, -3, 3}];
Export[fileName, p];

(在外壳中)

pdf2ps test.pdf && ps2pdf test.ps test1.pdf

test.pdf是 446kB,而test1.pdf在我的机器上是 11.5MB!

通常发生的情况是,当您使用 Mathematica 导出 PDF 文件时,它会存储文本(轴刻度线、标签等)、字体和图像,所有这些都会增加。如果您有带有大量刻度线/标签的矢量图形,那么这些可能非常重要。这样做pdf->ps->pdf会剥离字体数据和文本数据的文件,同时压缩图像,这就是您看到文件大小减小的原因。虽然在小放大倍率下无法观察到,但当您大幅放大时,您会注意到差异。例如,替换p

p = Plot[Sin[t], {t, 0, 2 Pi}];

在我的机器上生成一个 37kB 的文件test.pdf和一个 8kB 的文件。test1.pdf8kb 文件的质量比原始文件差(放大到 600%+ 显示这一点)。您可以通过执行查看mathematica 存储在PDF 文件中的纯文本信息

Import[fileName,"Plaintext"]

但是,对于更复杂的 PDF 文件,转换为ps然后再返回pdf不一定是一个好的选择,并且可能导致文件大小爆炸。

您可以尝试使用 PDF 中的选项Export,例如"AllowRasterization"and ImageResolution,甚至在保存之前栅格化图像,但我想您已经知道了。

这是从mathematica中减小文件大小的一种快速而肮脏的方法

Export[fileName, First@Import@Export[fileName, p]]

文件大小现在只有 12kB!它只有原版的三分之一,仅比从 获得的略大pdf->ps->pdf,并且质量比 8kB 的要好得多(尽管与原版不完全相同。在 1200% 及以上的放大倍率下可以看到差异) .

发生的情况是,在导入和重新导出时,仅保存存储的图像。它的纯文本部分被丢弃了,在这个小例子中,这恰好很重要。例如DensityPlot,仅减少到 425kB(仍然下降而不是增加到 11MB)。

于 2011-05-16T06:05:46.587 回答