Конвертировать SVG в PDF на нескольких листах
У меня есть файл SVG, созданный в Inkscape. Я хочу напечатать это на нескольких листах, чтобы наконец сформировать большой плакат. Мне нужно, чтобы эти несколько листов были преобразованы в PDF, чтобы я мог распечатать их из любой операционной системы.
Файл, с которым я работаю:
- SVG имеет размер 840 мм х 297 мм. (ширина х высота)
- Создайте PDF-файл с двумя листами формата А3 (420 мм х 297 мм).
Вы можете скачать файл, если хотите попробовать свое решение самостоятельно.
Я открыт практически для любого решения, будь то расширения / скрипты Inkscape или инструменты командной строки. Я просто не хочу баловаться вручную каждый раз, когда мне нужно заново делать конвертацию.
Вещи, которые я пробовал и не работал:
- Inkscape -pages добавляет поддержку нескольких страниц в Inkscape, но не поддерживает разделение данного файла на страницах.
Инструменты, которые будут работать только с форматом растровых изображений (например, PNG или JPG), не нужны:
Инструменты, которые я слышал, могут работать, но где я не уверен, будут ли они и как к ним обращаться:
Обновление: добавлена ссылка для скачивания.
4 ответа
Вы пробовали pdfposter
пакет? С веб-сайта проекта: "Pdfposter можно использовать для создания большого плаката, построив его из нескольких страниц и / или напечатав его на большом носителе. Он ожидает в качестве входного файла PDF, обычно печатая на одной странице. Результат снова Файл PDF, возможно, содержащий несколько страниц, которые вместе составляют постер. Входная страница будет масштабирована для получения желаемого размера."
Я попробовал быстрый пример со страницы руководства: pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdf
с вашим образцом файла (который я преобразовал в PDF в Inkscape), и он, кажется, работает: 6 страниц формата A3, которые необходимо установить в сетке 2×3.
Вы можете сохранить изображение в формате pdf из inkscape напрямую, используя самое высокое разрешение (например, 600), принтера, который вы планируете использовать для печати.
После этого вы можете использовать imagemagick (команда convert), чтобы обрезать верхнюю и нижнюю части изображения независимо в два разных файла pdf. Например (напечатано на терминале):
convert askUbuntu.pdf -crop 100%x50% +repage askUbuntuSplit.pdf
Затем вы можете разделить его на отдельные файлы PDF, используя:
pdftk filename.pdf burst
Я предполагаю, что imagemagick и pdftk уже установлены.
Так как я не смог получить ваш файл (неработающая ссылка), я справился с PDF на моем компьютере. Во всяком случае, так я поступил:
- Запустите Scribus (1.4.3 в Ubuntu 12.04 LTS)
- создать новый двухстраничный документ A3 с выбранными параметрами "Двойная страница" и "Начиная с левой страницы" (возможно, не правильный перевод, так как я работаю над французской версией Scribus).
- создать рамку над двумя страницами
- импортировать PDF
- установить размер изображения по размеру
- экспортировать как PDF
- распечатай это
Результат в архиве вы можете скачать здесь: http://www.filedropper.com/2a3tar_1 (1.4 мес)
Проблема, которая может возникнуть, связана с техническими наценками, которые обычно имеют настольные принтеры.
В этом случае вы можете сделать 2 кадра изображений, которые перекрываются, как в предоставленном файле 2A3bis.sla.
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)))
Генерировать ломтики
python svg_slice.py 2 1 askUbuntu.svg
т.е. 2х1 сетка
Затем используйте 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