【发布时间】:2013-01-09 03:48:07
【问题描述】:
我目前有一个脚本可以生成大量 3.5 英寸见方的 SVG 图像。我需要的是能够将这些 SVG 放入可以轻松准确地打印的布局中。
我尝试过使用 HTML 模板,但 HTML/CSS 没有足够强大的打印支持。
哪种文档布局语言最适合处理 SVG 图像,如何在脚本语言中实现?
我使用 Ruby 来生成我的 SVG,虽然更可取,但 Ruby 也不是用来生成打印布局的语言。
【问题讨论】:
我目前有一个脚本可以生成大量 3.5 英寸见方的 SVG 图像。我需要的是能够将这些 SVG 放入可以轻松准确地打印的布局中。
我尝试过使用 HTML 模板,但 HTML/CSS 没有足够强大的打印支持。
哪种文档布局语言最适合处理 SVG 图像,如何在脚本语言中实现?
我使用 Ruby 来生成我的 SVG,虽然更可取,但 Ruby 也不是用来生成打印布局的语言。
【问题讨论】:
我建议将所有 SVG 编译为更大的 SVG,将所有内容放在您想要的位置,然后使用多个选项之一将其转换为 PDF:
inkscape -f in.svg -A out.pdf
java -jar batik-rasterizer.jar -m application/pdf -d out.pdf in.svgrsvg-convert -f pdf -o out.pdf in.svg您还可以将rsvg2 Ruby gem 与 Cairo PDF 表面结合使用。不过,文档似乎稀少或分散。
【讨论】:
如果您有预算,Prince 就是您想要的。由于您已经尝试使用 CSS+HTML 来使其正常工作,因此您可能已经准备好一个可行的解决方案。只需生成 HTML、SVG 和 CSS(使用 CSS3 paged media extensions 以获得最佳控制),然后将其传递给 Prince 以生成 PDF。我已经在几个项目中使用了它,效果很好。
有一些免费选项可以像 Prince 一样工作,尤其是 wkhtmltopdf,但它们可能不像 Prince 那样尊重您的分页选项。
否则,您也许可以使用Cairo 一起破解某些东西,方法是创建一个页面大小的 SVG 图像并将其布局,添加指向多个外部 SVG 文件的链接。
这些选项中的任何一个最终都会生成 PDF,这是确保无论使用哪种浏览器或操作系统都能打印相同的唯一方法。
【讨论】: