2014-11-19 2 views
2

У меня есть большой сценарий DOT с несколькими графиками, определенных в нем:Рендер DOT сценария с несколькими графиками в PDF один график на страницу

digraph Tree0 { 
    ... 
} 

digraph Tree1 { 
    ... 
{ 
... 

я могу вынести это в файл приписка, где каждый график на отдельном по телефону dot -Tps forest.dot -o forest.ps. Однако по соображениям производительности я бы предпочел PDF над постскриптумом (прокрутка и масштабирование намного более плавное). Но если я использую ту же команду с PDF вместо PS, результирующий файл содержит только один из графиков, и похоже, что остальные записываются в stdout.

Преобразование PS в PDF с ps2pdf не сработало, так как графики и, следовательно, страницы файла PS имеют разный размер, но полученный в результате PDF-файл будет иметь фиксированный размер страницы, отсекая части графиков.

Есть ли простой способ получить многографический PDF-файл из точки, например, он работает с файлом PS? Если нет, как я могу преобразовать PS в PDF и сохранить переменный размер страницы?

ответ

4

Что об этом: dot -Tps2 forest.gv -o forest.ps | ps2pdf forest.ps

Основное отличие это использует -Tps2. Согласно документации:

ps2 Производит вывод PostScript с PDF-нотации. Предполагается, что результат будет напрямую преобразован в формат PDF. Обозначения включают в себя информацию в формате PDF, так что полученный PDF-файл может быть правильно использован с инструментами pdf, такими как pdflatex. Кроме того, если узел имеет атрибут URL, он преобразуется в PDF-код таким образом, что узел, если смотреть в PDF-viewer, например, acroread, является ссылкой на данный URL. Если URL привязан к графику, это служит базой, так что от него выводятся относительные URL-адреса на узлах.

+0

Это работает и гораздо приятнее, чем мое уродливое обходное решение. Большое спасибо. – luator

3

Я только что нашел раствор самостоятельно, используя csplit и pdftk:

dot -Tpdf forest.dot | csplit --quiet --elide-empty-files --prefix=tmpforestfile - "/%%EOF/+1" "{*}" && pdftk tmpforestfile* cat output forest.pdf && rm -f tmpforestfile* 
  1. точка записывает все отдельные файлы в формате PDF в одном выходе
  2. трубы этот выход к csplit и разделить его на отдельные файлы , используя токен %% EOF
  3. объединить файлы PDF в один, используя pdftk
  4. remo ve временные файлы

Немного уродливый, но он работает.

+1

Это решение решает дополнительную проблему, позволяя каждой диаграммы есть его страница размера правильно его график. Другой метод систематически обрезал один из моих наборов данных. – hawkjo

1

У меня была аналогичная проблема с несколькими графиками, которые должны быть экспортированы как одно изображение (PNG или SVG или ...). Использование вывода PS/PS2 и преобразование в PDF было неудовлетворительным, поскольку оно иногда искажало изображения компонентов (или обрезало их), а также не имело простого способа просмотра результата в целом.

Я закончил использование изображений для простого склеивания изображений PNG рядом друг с другом.

Это простое решение: https://gist.github.com/drmalex07/1088544cfc121acab0463691f71fef0a

 Смежные вопросы

  • Нет связанных вопросов^_^