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}];
test.pdf
私のマシンで37kBファイルと8kBファイルを生成しますtest1.pdf
。8kbファイルの品質は元のファイルよりも劣ります(600%以上にズームするとこれがわかります)。数学がPDFファイルに保存しているプレーンテキスト情報は、
Import[fileName,"Plaintext"]
ただし、より複雑なPDFファイルの場合、変換してps
から元に戻すことpdf
は必ずしも適切なオプションではなく、ファイルサイズが大きくなる可能性があります。
Export
でPDFのオプションを試してみることができます。"AllowRasterization"
またImageResolution
、保存する前に画像をラスタライズすることもできますが、すでにご存知だと思います。
これが数学の中からファイルサイズを減らす裏通りの迅速で汚い方法です
Export[fileName, First@Import@Export[fileName, p]]
ファイルサイズはわずか12kBになりました!オリジナルの3分の1に過ぎず、から得られたものよりわずかに大きくpdf->ps->pdf
、8kBのものよりもはるかに優れた品質です(オリジナルと完全に同じではありませんが、1200%以上の倍率で違いが見られます) 。
インポートおよび再エクスポートすると、保存されている画像のみが保存されます。そのプレーンテキスト部分は破棄されますが、この小さな例では、それはたまたま重要でした。このDensityPlot
例では、削減は425kBにすぎませんでした(それでも、11MBまで爆発するのではなく減少しました)。