在几张纸上将SVG转换为PDF


9

我在Inkscape中创建了一个SVG文件。我想将其打印在多张纸上,最终形成一张大海报。我需要将这些多张纸转换为PDF,以便可以从任何操作系统进行打印。

我正在使用的文件:

  • SVG的尺寸为840毫米x 297毫米。(宽x高)
  • 生成两张A3纸(420毫米x 297毫米)的PDF。

如果您想自己尝试解决方案,则可以下载文件

我愿意接受几乎所有解决方案,无论是Inkscape扩展/脚本还是命令行工具。我只是不想每次都要重新进行转换时都手动操作。

我尝试过但不起作用的事情:

  • inkscape-pages向Inkscape添加了对多个页面的支持,但不支持将给定文件分离到页面。

只能使用光栅图像格式(例如PNG或JPG)的工具是不行的

我听说这些工具可能会起作用,但是我不确定它们是否会起作用以及如何使用它们:

更新:添加了下载链接


看一下这个问题:打印海报(用几张纸)
烦恼2014年

您可以使用imagemagick(命令转换)将图像的上部和下部分别裁剪为两个不同的pdf文件。
哈里斯

例如:convert filename.svg -crop 100%x50% +repage filename.pdf
哈里斯

@MadMike,您能谈谈您目前的工作流程吗?(即您如何手动操作?)
user.dz 2014年

1
@Sneetsher我有一个超大(2 x A3)SVG文件。我想将其转换为一种格式(例如PDF),我可以将其转换为工作格式并从那里打印。在工作中,我只会有可用的Windows。现在,这不是手动执行或不手动执行的问题,而是根本如何执行的问题。
MadMike 2014年

Answers:


1

你试过pdfposter套餐了吗?从项目的网站上“ Pdfposter可用于通过从多页构建和/或在大型媒体上打印来创建大型海报。它希望输入PDF文件,通常在单页上打印。输出再次是PDF文件,可能包含多个页面,一起构成了海报。输入页面将按比例缩放以获得所需的大小。”

我尝试了一个手册页中的简单示例:pdfposter -mA3 -pA0 askUbuntu.pdf printer-pages.pdf使用您的示例文件(在Inkscape中将其转换为PDF),它似乎可以正常工作:需要在2×3网格中设置6个A3页面。


差不多可以了。我已经尝试pdfposter -m a3 -p 1x2a3 askUbuntu.pdf out.pdf了生成的PDF具有蓝色背景(pdfposter 0.6.0)而不是白色。您可以根据需要自己进行测试。请在此处下载源PDF,并重复转换。你有相同的结果吗?
MadMike 2014年

@MadMike:我的PDF带有相同的蓝色背景(但是我的白色)。您是否还在Inkscape中使用“另存为”来创建PDF?我注意到在您的PDF中,我无法选择文本,而在我的文本中却可以。如果在PDF导出选项中选择“将文本转换为路径”选项,则使用后将获得与您相同的蓝色背景pdfposter。为了完整pdfposter起见:我具有相同的Inkscape 版本和0.48.4版本。
ph0t0nix 2014年

朱普 完美运作。保存为PDF时将文本转换为路径会有所不同。现在,我希望字体嵌入对于打印机来说足够好。;)
MadMike 2014年

谢谢,pdfposter也为我工作。我只需要获取其开发版本(gitlab.com/pdftools/pdfposter),因为来自官方Ubuntu仓库(pdfposter 0.6.0-2)的版本将黑白颜色反转。
Michal Fapso '16

2

您可以使用计划用于打印的打印机的最高分辨率(dpi),例如600,直接从inkscape中将图像另存为pdf。

之后,您可以使用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
Harris

convert banner_eingang5.svg -density 600 -define psd:fit-page=2338x -resize 2338x -crop 50%x100% +repage filename.pdf我得到的光栅化 PDF尺寸为49x35mm(小)
MadMike 2014年

这会给您栅格化的pdf:convert -density 90 askUbuntu.svg -crop 50%x100% +repage -trim -background black askUbuntu.pdf
哈里斯(Harris)2014年

据我所知,@ Harris imagemagick无法处理矢量图形。不管您做什么,输出将始终是光栅化的图像。
谷氨酰胺

他们在他们的网站上说imagemagick使用inkscape或rsvg-convert来处理svg文件。
哈里斯

0

因为无法获取您的文件(链接断开),所以我使用计算机上的PDF进行管理。无论如何,这就是我的处理方式:

  • 启动Scribus在Ubuntu 12.04 LTS上为1.4.3
  • 创建一个新的A3 2页文档,并选择选项“双页”和“从左开始”(因为我正在使用法语Scribus版本,因此翻译不正确)。
  • 在两个页面上创建图像框架
  • 导入PDF
  • 设置适合框架的图像尺寸
  • 导出为PDF
  • 打印它

结果在存档中,您可以在这里下载:http : //www.filedropper.com/2a3tar_1 (1.4 Mo)

可能发生的问题与台式打印机通常具有的技术利润有关。

在这种情况下,您可以使2个图像帧重叠,就像提供的2A3bis.sla文件中一样。


我已经更新了下载链接。
MadMike 2014年

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
    

    即:2x1网格

  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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.