Перетворення SVG в PDF на декількох аркушах


9

У мене файл SVG створений в Inkscape. Я хочу надрукувати його на декількох аркушах, щоб нарешті сформувати великий плакат. Мені потрібні ці кілька аркушів, перетворених у PDF, щоб я могла надрукувати його з будь-якої операційної системи.

Файл, з яким я працюю:

  • SVG має розмір 840 мм x 297 мм. (ширина х висота)
  • Створіть PDF з двома аркушами формату А3 (420 мм х 297 мм).

Ви можете завантажити файл, якщо хочете спробувати своє рішення самостійно.

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

Те, що я намагався і не працював:

  • inkscape-pages додає підтримку декількох сторінок до Inkscape, але не підтримує поділ певного файлу до сторінок.

Інструменти, які працюватимуть лише у форматі растрового зображення (наприклад, PNG або JPG), не є :

Інструменти, які я чув, що це може працювати, але де я не впевнений, чи будуть вони, і як до них звернутися:

Оновлення: додано посилання для завантаження .



Ви можете використовувати imagemagick (перетворити команду), щоб обрізати верхню та нижню частини зображення незалежно у два різні файли pdf.
Харріс

Наприклад:convert filename.svg -crop 100%x50% +repage filename.pdf
Гарріс

@MadMike, Не могли б ви зазначити свій поточний робочий процес? (тобто як ви це робите вручну?)
user.dz

1
@Sneetsher У мене є великий розмір файлу SVG (2 x A3). Я хотів би перетворити його у такий формат (як PDF), який я можу перевезти на роботу та надрукувати звідти. На роботі у мене будуть доступні лише Windows. Зараз справа не в тому, чи робити це вручну чи ні, а як це зробити взагалі.
MadMike

Відповіді:


1

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

Я спробував короткий приклад зі сторінки man: pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdfіз вашим зразковим файлом (який я перетворив у PDF в Inkscape), і, здається, працює: 6 сторінок A3, які потрібно встановити в 2 × 3 сітці.


Майже працює. Я спробував pdfposter -m a3 -p 1x2a3 askUbuntu.pdf out.pdfотриманий PDF-файл має синій фон (pdfposter 0.6.0) замість білого. Ви можете перевірити його самостійно, якщо хочете. Завантажте вихідний PDF тут і повторіть перетворення, будь ласка. У вас однаковий результат?
MadMike

@MadMike: Я отримую однаковий синій фон із вашим PDF (але білий із моїм). Ви також використовували "Зберегти як" у Inkscape, щоб створити PDF? Я помітив, що у вашому PDF-файлі я не можу вибрати текст, тоді як я можу. Якщо я вибираю опцію "конвертувати тексти в шляхи" в опціях експорту в PDF, я отримую той самий синій фон, що і ви після використання pdfposter. Для повноти: у мене однакова версія pdfposterі версії 0.48.4 Inkscape.
ph0t0nix

Юп. Працює чудово. Не перетворення тексту в шлях, зберігаючи в PDF, має значення. Тепер я сподіваюся, що вбудовування шрифту досить добре для принтера. ;)
MadMike

Дякую, pdfposter працював і на мене. Мені просто довелося отримати його версію для розробки ( gitlab.com/pdftools/pdfposter ), тому що в офіційному сховищі Ubuntu (pdfposter 0.6.0-2) перевернуті чорно-білі кольори.
Міхал Фапсо

2

Ви можете зберегти зображення як pdf безпосередньо з Inkscape безпосередньо, використовуючи принтер, який ви плануєте використовувати для друку, з найвищою роздільною здатністю (dpi), скажімо, 600.

Після цього ви можете використовувати imagemagick (команда конвертувати), щоб обрізати верхню та нижню частини зображення самостійно у два різних файли pdf. Наприклад (набрано на терміналі):

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

Потім ви можете розділити його на окремі файли PDF, використовуючи:

pdftk filename.pdf burst

Я припускаю, що Imagemagick і pdftk вже встановлені.


Ви також можете спробувати наступні варіанти, щоб уникнути розсипання зображення:-density 600 -define psd:fit-page=2338x -resize 2338x
Гарріс,

convert banner_eingang5.svg -density 600 -define psd:fit-page=2338x -resize 2338x -crop 50%x100% +repage filename.pdfЯ отримую растрований pdf розміром 49x35 мм (шлях до малого)
MadMike

Це дає вам растрований pdf:convert -density 90 askUbuntu.svg -crop 50%x100% +repage -trim -background black askUbuntu.pdf
Харріс

@Harris, наскільки я знаю, imagemagick не може обробити векторну графіку. Що б ви не робили, вихід завжди буде растризованим зображенням.
Glutanimate

На їхньому веб-сайті вони кажуть, що imagemagick використовує Inkscape або rsvg-converter для обробки файлів svg.
Харріс

0

оскільки я не міг отримати ваш файл (непрацююча посилання), мені вдалося отримати PDF-файл, який я мав на своєму комп’ютері. У всякому разі, так я і поступив:

  • Запустити Scribus ( 1.4.3 на Ubuntu 12.04 LTS )
  • створити новий документ на сторінці A3 на 2 сторінки з опціями "Подвійна сторінка" та "Починаючи з лівої сторінки" (можливо, не правильний переклад, оскільки я працюю над французькою версією Scribus).
  • створити рамку зображень на двох сторінках
  • імпортувати PDF
  • встановити розмір зображення, що підходить до кадру
  • експорт у форматі PDF
  • роздрукувати його

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

Проблема, яка може виникнути, пов'язана з технічними полями настільних принтерів, як правило,.

У цьому випадку ви можете зробити два кадри зображення, які перекриваються, як у наданому файлі 2A3bis.sla .


Я оновив посилання для завантаження.
MadMike

0

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.