Могу ли я изменить настройки экспорта в pdf в Mathematica 8? - PullRequest
5 голосов
/ 16 мая 2011

Я использую Mathematica для построения необходимого мне числа рисунков, а затем использую их в виде PDF-файлов в Latex.

Проблема заключается в том, что Mathematica экспортирует рисунки с использованием совместимости параметров Acrobat 5.x, и я думаю, что это приводитна рисунках большого размера, которые не оптимизированы, и когда у меня есть пара из них в окончательном формате PDF, иногда требуется несколько минут, чтобы распечатать одну страницу окончательного документа.

Есть ли способ изменить настройки вывода PDF-файлов в Mathematica?Должен ли я экспортировать в формате PDF, преобразовать в postscript и создать новые файлы PDF из .ps с новыми настройками?Должен ли я экспортировать .eps и конвертировать в pdf?Есть ли один шаг для создания оптимизированных PDF-файлов с помощью Mathematica?

Быстрый пример (и немного преувеличенный, так что разница очевидна): PDF-файл, который я экспортирую из Mathematica (Export ["C: /figure.pdf)",%]) имеет размер 1065 КБ, .pdf ->. ps ->. pdf дает конечный файл размером 652 КБ, а .eps ->. pdf файл размером 610 КБ.Я бы не использовал ни один из них в латексе, но он показывает разницу в настройках.

1 Ответ

4 голосов
/ 16 мая 2011

Это миф, что 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 МБ).

...