Конвертировать 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)))
  1. Генерировать ломтики

    python svg_slice.py 2 1 askUbuntu.svg
    

    т.е. 2х1 сетка

  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
Другие вопросы по тегам