我有一个大型DOT脚本,其中定义了多个图形:
digraph Tree0 {
...
}
digraph Tree1 {
...
{
...
Run Code Online (Sandbox Code Playgroud)
我可以将其呈现为postscript文件,其中每个图表都通过调用在单独的页面上dot -Tps forest.dot -o forest.ps.但是,出于性能原因,我更喜欢PDF而不是postscript(滚动和缩放更加平滑).但是如果我使用PDF而不是PS使用相同的命令,则生成的文件只包含其中一个图形,看起来其余部分写入stdout.
将PS转换为PDF ps2pdf不起作用,因为图形以及PS文件的页面具有不同的大小,但生成的PDF文件将具有固定的页面大小,从而切掉部分图形.
有没有一种简单的方法可以从dot获取多图PDF,就像它可以与PS文件一起使用?如果没有,我如何将PS转换为PDF并保持不同的页面大小?
我自己找到了一个解决方案,使用csplitand pdftk:
dot -Tpdf forest.dot | csplit --quiet --elide-empty-files --prefix=tmpforestfile - "/%%EOF/+1" "{*}" && pdftk tmpforestfile* cat output forest.pdf && rm -f tmpforestfile*
Run Code Online (Sandbox Code Playgroud)
csplit使用 %%EOF 标记将此输出通过管道传输并将其拆分为单独的文件pdftk有点难看,但它正在工作。
那这个呢: dot -Tps2 forest.gv -o forest.ps | ps2pdf forest.ps
主要区别在于它的用途-Tps2.根据文件:
ps2使用PDF表示法生成PostScript输出.假设输出将直接转换为PDF格式.符号包括PDF边界框信息,因此生成的PDF文件可以正确地与pdf工具一起使用,例如pdflatex.此外,如果节点具有URL属性,则将其转换为PDF代码,使得当在PDF查看器(例如,acroread)中查看时,节点是到给定URL的链接.如果URL附加到图形,则将其作为基础,以便节点上的相对URL从中派生.
| 归档时间: |
|
| 查看次数: |
8025 次 |
| 最近记录: |