Преобразуйте SVG в PDF на нескольких листах

Мне создали файл SVG в Inkscape. Я хочу распечатать его на нескольких листах для окончательного формирования большого плаката. Мне нужны эти несколько листов, преобразованных в PDF, таким образом, я могу распечатать его от любой операционной системы.

Файл я работаю с:

  • SVG имеет размер 840 мм x 297 мм. (ширина x высота)
  • Генерируйте PDF с двумя (420 мм x 297 мм) листов A3.

Можно загрузить файл, если Вы хотите испытать свое решение сами.

Я открыт почти для любого решения, быть этим расширения/сценарии Inkscape или инструменты командной строки. Я просто не хочу бездельничать вручную каждый раз, когда я должен восстановить преобразование.

Вещи я попробовал и не работал:

  • inkscape-страницы добавляют поддержку нескольких страниц к Inkscape, но никакую поддержку для разделения данного файла к страницам.

Инструменты, которые будут только работать с форматом растрового изображения (как PNG или JPG) являются остановкой:

Могли бы работать инструменты я услышал это, но где я не уверен, если они будут и как приблизиться к ним:

Обновление: Добавленная ссылка на загрузку.

9
задан 13 April 2017 в 05:24

4 ответа

Вы попробовали pdfposter пакет? От веб-сайт проекта : "Pdfposter может использоваться для создания большого плаката путем создания его из нескольких страниц и/или печати его на крупных медиа. Это ожидает, как введено файл PDF, обычно печатающий на единственной странице. Вывод является снова файлом PDF, возможно, содержащим несколько страниц, вместе создающих плакат. Входная страница будет масштабироваться для получения желаемого размера".

я попробовал быстрый пример из страницы справочника: pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdf с Вашим файлом примера (который я преобразовал в PDF в Inkscape), и это, кажется, работает: 6 страниц A3, которые должны быть установлены в 2Г — 3 сетки.

1
ответ дан 23 November 2019 в 05:12

Можно сохранить как изображение как PDF от inkscape непосредственно с помощью самого высокого разрешения (точки на дюйм), сказать 600 принтера, который Вы планируете использовать для печати.

Впоследствии, можно использовать imagemagick (команда преобразовывают) обрезать верхние и более низкие части изображения независимо в два различных файла PDF. Например (введенный на терминале):

convert askUbuntu.pdf -crop 100%x50% +repage askUbuntuSplit.pdf

можно тогда разделить его на отдельное использование файлов PDF:

pdftk filename.pdf burst

я предполагаю imagemagick, и pdftk уже установлены.

2
ответ дан 23 November 2019 в 05:12

поскольку я не мог получить Ваш файл (неработающая ссылка), я справился с PDF, который я имел на своем компьютере. Так или иначе это - то, как я продолжал двигаться:

  • Запуск Scribus ( 1.4.3 на Ubuntu 12.04 LTS)
  • создает новый документ A3 2 страниц с выбранными опциями "Double Page" и "Starting on left page" (возможно, не правильный перевод, поскольку я работаю над французской версией Scribus).
  • создают фрейм изображения по двум страницам
  • соответствие размера изображения набора PDF
  • импорта для структурирования
  • экспорт, поскольку PDF
  • печатает его

, результат находится в архиве, который можно загрузить здесь: http://www.filedropper.com/2a3tar_1 (1.4 мес)

проблема, которая может произойти, связана с техническими настольными принтерами полей, обычно имеют.

В этом случае, Вы могли сделать 2 кадра изображений, которые накладываются как в 2A3bis.sla обеспеченный файл.

0
ответ дан 23 November 2019 в 05:12

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

svg_slice.py

#!/usr/bin/env python

import sys, os.path
import xml.etree.ElementTree as ET

fin=sys.argv[-1]
hsplit=int(sys.argv[1])
vsplit=int(sys.argv[2])

tree = ET.parse(fin)
root = tree.getroot()

hstep=float(root.attrib['width'])/hsplit
vstep=float(root.attrib['height'])/vsplit

root.attrib['width']=str(hstep)
root.attrib['height']=str(vstep)

for i in range(hsplit):
    for j in range(vsplit):
        root.attrib['viewBox']='%.4f %.4f %.4f %.4f' % (i*hstep, j*vstep, hstep, vstep)
        tree.write('cell_%i-%i_%s' % (i,j,os.path.basename(fin)))
  1. Генерируйте части

    python svg_slice.py 2 1 askUbuntu.svg
    

    т.е.: 2x1 сетка

  2. Затем используйте Inkscape для экспорта PDF для каждой части/ячейки

    for i in $(ls cell_*); do inkscape $i --export-pdf=$i.pdf; done;
    

ls cell_*

cell_0-0_askUbuntu.svg      cell_1-0_askUbuntu.svg
cell_0-0_askUbuntu.svg.pdf  cell_1-0_askUbuntu.svg.pdf
0
ответ дан 23 November 2019 в 05:12

Другие вопросы по тегам:

Похожие вопросы: