Преобразование AI в EPS / JPEG без «Использовать артборды» - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь прочитать (предварительный просмотр) файл AI (Adobe Illustrator) в моем веб-приложении. мое веб-приложение работает на компьютере с Linux и в основном использует Python.

Я не смог найти ни одного собственного кода Python, который может предварительно просматривать AI-файл, поэтому я продолжил поиск решения и нашел ghostscript, который дает возможность конвертировать AI в JPG / PNG, и у меня в этом формате нет проблем с предварительным просмотром. У меня проблема в том, что мне нужно, чтобы предварительный просмотр включал весь документ, а не только артборд, в иллюстраторе это возможно при снятии флажка «использовать артборды» при сохранении, см. Скриншот: https://helpx.adobe.com/content/dam/help/en/illustrator/how-to/export-svg/_jcr_content/main-pars/image0/5286-export-svg-fig1.jpg

но когда я пытаюсь экспортировать из ghostscript, я не могу заставить его работать ... Насколько я понимаю, лучше всего сначала попробовать конвертировать в EPS, а затем в JPG / PNG, но я тоже не смог этого сделать, и элементы, которые находятся за пределами артборда, не отображаются.

в Linux, это команды, которые я в основном пробовал после установки ghostscript:

gs -dNOPAUSE -dBATCH -sDEVICE=eps2write -sOutputFile=out.eps input.ai

gs -dNOPAUSE -dBATCH -sDEVICE=jpeg -r300 -sOutputFile=out.jpeg input.ai

gs -dNOPAUSE -dBATCH -sDEVICE=pngalpha -r300 -sOutputFile=out.png input.ai

если это невозможно с ghostscript и мне нужно вместо этого imagemagick, я не возражаю против его использования ... Я пробовал это в течение 10 минут и только что получил кучу ошибок, поэтому я оставил его ...

AI-файл, например: https://drive.google.com/open?id=1UgyLG_-nEUL5FLTtD3Dl281YVYzv0mUy

Jpeg пример вывода, который я хочу: https://drive.google.com/open?id=1tLT2Uj1pp1gKRnJ8BojPZJxMFRn6LJoM

Спасибо

1 Ответ

0 голосов
/ 29 мая 2019

Во-первых, собственные файлы Adobe Illustrator технически вообще не поддерживаются Ghostscript. Они могут работать, потому что обычно они представляют собой файлы PostScript или PDF с пользовательскими битами, которые можно игнорировать при рисовании содержимого. Но это не гарантия.

Во-вторых, нет, не надо многократно конвертировать файлы! Это мифология культового груза, которая обходила целую вечность. Иногда есть причины для этого, но в целом это просто увеличивает проблемы, а не решает их. На самом деле, не делай этого.

Вы не процитировали ошибки, которые получаете, и не предоставили никаких файлов для просмотра, так что на самом деле невозможно определить, в чем заключается ваша проблема. Я понятия не имею, что такое «артборд», и изображение диалогового окна Illustrator не помогает, извините, сказать.

Возможно, если бы вы могли предоставить пример файла, и, возможно, изображение того, что вы ожидаете, возможно, было бы возможно выяснить это. Моя догадка заключается в том, что ваш файл .ai является файлом PDF, и в нем есть MediaBox (который по умолчанию используется Ghostscript) и ArtBox, который вы действительно хотите использовать. Или что-то типа того. Трудно сказать без дополнительной информации.

[EDIT]

Ну, я боюсь, что ответ здесь в том, что вы не можете легко получить то, что вы хотите, из этого файла без использования Illustrator.

Файл представляет собой файл PDF (если вы переименуете input.ai в input.pdf, вы можете открыть его с помощью программы чтения PDF). Но Illustrator не использует большую часть файла PDF, когда открывает его. Вместо этого файл PDF содержит ключ '/ PieceInfo', который является ключом в словаре страницы. Это указывает на словарь, который имеет / закрытый ключ, который (наконец-то!) Указывает на словарь с кучей иллюстраторов:

52 0 obj
<<
  /AIMetaData 53 0 R
  /AIPrivateData1 54 0 R
  /AIPrivateData10 55 0 R
  /AIPrivateData11 56 0 R
  /AIPrivateData2 57 0 R
  /AIPrivateData3 58 0 R
  /AIPrivateData4 59 0 R
  /AIPrivateData5 60 0 R
  /AIPrivateData6 61 0 R
  /AIPrivateData7 62 0 R
  /AIPrivateData8 63 0 R
  /AIPrivateData9 64 0 R
  /ContainerVersion 11
  /CreatorVersion 23
  /NumBlock 11
  /RoundtripStreamType 1
  /RoundtripVersion 17
>>
endobj

Это фактический сохраненный формат файла Illustrator. Вы можете рассматривать файл PDf как «предварительный просмотр», обернутый вокруг собственного файла Illustrator. Illustrator читает файл PDF, чтобы найти свои собственные данные, а затем выбрасывает файл PDF и использует вместо него собственный формат файла.

Проблема в том, что PDF-часть файла просто не содержит содержимого, которое вы хотите просмотреть. Это хранится в родных данных Illustrator. Ghostscript просто отображает то, что находится в файле PDF, но не смотрит на собственный файл Illustrator.

Глядя на личные данные Illustrator, некоторые из них несжатые, но большинство из них сжаты, в них не говорится, как они сжимаются, но применение фильтра FlateDecode создает хороший старомодный файл PostScript в формате Illustrator, который будет работать с Ghostscript.

Но вам придется вручную анализировать файл PDF, извлекать все сжатые потоки AIPrivateData, объединять их вместе, применять фильтр FlateDecode для их распаковки и только затем отправлять полученный результат в Ghostscript с установленным параметром -dEPSCrop. Это приведет к желаемому результату.

Но ни Ghostscript, ни ImageMagick (который обычно использует Ghostscript для рендеринга PDF-файлов) не сделают ничего подобного за вас, вам придется делать все это самостоятельно.

...