изображение в формате eps (из inkscape) не отображается в tcpdf - PullRequest
5 голосов
/ 26 марта 2010

Использование php и TCPDF для создания PDF-файла. Все прекрасно работает, за исключением случаев, когда я пытаюсь записать EPS-изображение в PDF, используя ImageEPS(). Ничего не появляется Нет ошибок (он точно может найти файл). Это просто проявляется как пробел.

Растровые изображения (например, PNG / JPG) работают просто отлично.

Я использую Inkscape , чтобы сохранить файл .eps. Когда я открываю файл в любой другой программе, он открывается просто отлично. Это единственный TCPDF, с которым он не появляется.

Ответы [ 3 ]

3 голосов
/ 02 марта 2011

Я открыл свой * .ai файл в Adobe Illustrator и сохранил файл как версию "Illustrator 3", чтобы решить эту проблему. Любая более свежая версия дала результаты, которые вы описываете (кроме «Illustrator 8», который дал мне черно-белую версию моего * .ai файла).

2 голосов
/ 07 декабря 2011

Немного поздно, но у меня была та же проблема.

Для меня, обходной путь должен был экспортировать как PDF и повторно использовать этот PDF в TCPDF / FPDI с:

$num_pages = $pdf->setSourceFile(path_to_file);  
$template_id = $pdf->importPage(1); //if the grafic is on page 1
$pdf->useTemplate($template_id,$x,$y,$width,$height);
0 голосов
/ 22 марта 2013

Функция ImageEPS в TCPDF (6.0.004) реализована не полностью, и в документации говорится следующее:

/**
 * Embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files.
 * NOTE: EPS is not yet fully implemented, use the 
 * setRasterizeVectorImages() method to enable/disable rasterization of 
 * vector images using ImageMagick library.
 * ...
 */
public function ImageEps(...){/*...*/}

TCPDF (6.0.004) проверяет метаданные eps для своего создателя. Если создатель - Adobe Illustrator, выполняется проверка версии, а если версия выше 8, генерируется ошибка. Создатели, кроме Adobe Illustrator, не проверяются, и функция может продолжаться. Похоже, что TCPDF не анализирует пролог PS, и это, вероятно, одна из причин, по которой поддерживаются не все версии AI. Вот что Справочник по языку PostScript говорит о разделе пролога:

  • Пролог - это набор определений процедур для конкретного приложения, которые Это может использовать при выполнении его сценария. Это включено как первая часть каждого Файл PostScript, сгенерированный приложением. Он содержит определения, которые соответствуют выходные функции приложения с возможностями, поддерживаемыми Язык PostScript.

Поскольку пролог не анализируется, проблематично правильно интерпретировать файл.

Inkscape (0.48.3.1 r9886) создает эпизоды с помощью cairo, ошибки не возникает и функция будет продолжена. TCPDF будет частично интерпретировать eps, но так как он ничего не выводит, выходные данные, вероятно, удаляются при обработке ошибок. Но это только предположение.

У меня был больший успех при экспорте моего EPS в SVG с inkscape -D --file = filename.eps --export-plain-svg = filename.svg и вместо этого используйте ImageSVG. Примечание: эта функция также не полностью реализована, поэтому я не могу гарантировать, что она будет работать. Я только что протестировал довольно простой EPS.

...