【问题标题】:How to put multiple SVGs on one page in a particular size?如何将多个 SVG 以特定尺寸放在一个页面上?
【发布时间】:2019-12-14 05:49:41
【问题描述】:

我正在设计一款纸牌游戏。我在 Inkscape 中制作了卡片模板,然后编写了一个 Python 脚本来复制模板并为每张卡片制作一个新的 SVG 文件,从 CSV 文件中填写标题等。

我想对生成的 SVG 做的是将它们放在一个页面上的 3x3 网格中,这样我就可以在普通纸上打印它们。我还希望它们具有特定的大小(在原始 Inkscape SVG 中指定)。请注意,我有不止一页的卡片。

我认为通常我可以将它们放在包装器 SVG 中并将其转换为 PDF,但 Inkscape 将 id 属性放在所有元素上,我预计这会导致问题。

如何将这些 SVG 放在 3x3 网格中的页面上?

【问题讨论】:

    标签: python svg imposition


    【解决方案1】:

    设法找到了解决方案,但仍有改进的余地。

    首先,我使用 Inkscape 在批处理模式下将所有 SVG 转换为 PDF。为此,我创建了一个这样的文件:

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

    然后我使用texlive-core 包中的pdfnup 命令(无论如何都在我的发行版上)进行页面布局:

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

    这可行,但有一件事我不明白,希望更好。原始 SVG 文件的大小应该正好适合卡片,但如果我使用 --scale 1.0,那么它们太大了。如果有人可以给出另一个答案,允许我以单位而不是百分比来指定卡片的宽度,我会投赞成票。

    【讨论】:

    • 谢谢,效果很好。与pdfjam --nup 3x3 --a4paper --outfile test.pdf *.pdf得到相同的结果
    猜你喜欢
    • 2011-03-23
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多