Это миф, что pdf->ps->pdf
всегда даст вам меньший размер файла. Например, рассмотрим
(в Mathematica)
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
- 446 КБ, тогда как test1.pdf
- колоссальные 11,5 МБ на моей машине!
Что обычно происходит, когда вы экспортируете PDF-файл с помощью Mathematica, он сохраняет текст (метки осей, метки и т. Д.), Шрифты и изображения, которые все увеличивают объем. Если у вас есть векторная графика с большим количеством меток / меток, это может быть весьма значительным. Выполнение pdf->ps->pdf
удалит файл данных шрифта и текстовых данных, одновременно сжимая изображение, поэтому вы видите уменьшение размера файла. Хотя это не заметно при небольшом увеличении, вы заметите разницу при значительном увеличении. Например, заменив p
на
p = Plot[Sin[t], {t, 0, 2 Pi}];
создает файл размером 37 КБ для test.pdf
и файл размером 8 КБ для test1.pdf
на моей машине. Качество файла 8 КБ хуже оригинального (увеличение до 600% + показывает это). Вы можете просмотреть текстовую информацию, которую Mathematica хранит в файле PDF, выполнив
Import[fileName,"Plaintext"]
Однако для более сложных файлов PDF преобразование в ps
, а затем обратно в pdf
не всегда является хорошим вариантом и может привести к увеличению размера файла.
Вы можете попробовать поиграть с параметрами PDF в Export
, такими как "AllowRasterization"
и ImageResolution
, или даже растеризовать изображение перед сохранением, но я думаю, вы уже знали это.
Вот простой и быстрый способ уменьшить размер файла из Mathematica
Export[fileName, First@Import@Export[fileName, p]]
Размер файла теперь составляет всего 12 КБ! Это только треть оригинала, только немного больше, чем получено из pdf->ps->pdf
, и имеет гораздо лучшее качество, чем 8 КБ (хотя не совсем то же самое, что и оригинал. Различия можно увидеть при увеличении 1200% и выше).
В результате импорта и повторного экспорта сохраняется только сохраненное изображение. Текстовая часть этого текста отбрасывается, и в этом небольшом примере это оказалось значительным. Для примера DensityPlot
сокращение было только до 425 КБ (все же, уменьшилось, а не увеличилось до 11 МБ).