Как разместить несколько SVG на одной странице определенного размера?

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

Что я хотел бы сделать с полученными SVG, так это поместить их в сетку 3х3 на одной странице, чтобы я мог распечатать их на обычной бумаге. Я также хотел бы, чтобы они были определенного размера (указан в оригинальном Inkscape SVG). Обратите внимание, что у меня есть карты на несколько страниц.

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

Как я могу поместить эти SVG на страницу в сетке 3x3?

1 ответ

Удалось найти решение, хотя есть возможности для улучшения.

Сначала я конвертирую все SVG-файлы в PDF-файлы, используя Inkscape в пакетном режиме. Для этого я создаю такой файл:

for ii in cards/*.svg; do
    echo "$ii --export-pdf=$ii.pdf" >> inkscape-commands
done
cd cards
DISPLAY= inkscape --shell < ../inkscape-commands

Тогда я использую pdfnup команда от texlive-core Пакет (в любом случае на моем дистрибутиве), чтобы сделать макет страницы:

pdfnup --nup 3x3 --paper a4paper --scale 0.90 --no-landscape *pdf

Это работает, но есть одна вещь, которую я не понимаю, и желание было лучше. Исходные файлы SVG должны быть точно подходящего размера для карт, но если я использую --scale 1.0 тогда они слишком большие. Если кто-то может дать другой ответ, который позволит мне указать ширину карточек в единицах, а не в процентах, я проголосую за это.

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