Mathematica可以创建多页PDF文件吗?

时间:2011-11-02 01:17:53

标签: pdf wolfram-mathematica

当我将一个多页pdf文件(我想到的文件包含艺术作品的图像,每页一个)导入Mathematica 8.0.1时

  

book = Import [“simple.pdf”]

Mathematica返回一个图形对象列表,每个页面对应一个。我在每个页面上执行了一些操作,然后想要将更改的页面保存回单个PDF文件

  

导出[“DistortedSimple.pdf”,distortedbook]

生成的文件包含单个页面上的所有图像。有没有一种方便的方法将图像列表导出为PDF,每页一个?

3 个答案:

答案 0 :(得分:5)

(嗨凯文!)

我刚评价过:

Print[ExampleData[#]] & /@ Take[ExampleData["TestImage"], 6]

Export["Desktop/Kevin.pdf", EvaluationNotebook[]]

使用V8.0.1 for OS X,生成的PDF分为四页。因此,我认为您最好的方法是(以编程方式)创建已修改图像的笔记本,然后导出该笔记本。

答案 1 :(得分:4)

Export似乎不可能,无论我使用Pages元素多少(除了其他人给出的基于笔记本的解决方案)。

另一种选择是install pdftk(我们将用来组装页面的相对较小的命令行工具),并使用以下Mathematica函数:

exportMultipagePDF[name_String, g_List, options___] :=
  Module[
    {fileNames, quote},
    quote[s_] := "\"" <> s <> "\"";
    fileNames = 
      Table[
        FileNameJoin[{$TemporaryDirectory, "mmapage" <> IntegerString[i] <> ".pdf"}],
        {i, Length[g]}
      ];
    Check[
      Export[#1, #2, "PDF", options] & @@@ Thread[{fileNames, g}], 
      Return[$Failed]
    ];
    If[
      Run["pdftk", Sequence @@ (quote /@ fileNames), "cat output", name] =!= 0,
      Return[$Failed]
    ];
    DeleteFile /@ fileNames;
  ]

在Windows上,我需要在将文件名传递给PDFtk之前引用文件名。我不了解其他平台,希望它不会造成任何麻烦。

尝试

exportMultipagePDF["test.pdf", Table[Graphics[{Hue[x], Disk[]}], {x, 0, 1, .2}]]

答案 2 :(得分:3)

尝试将笔记本保存为PDF,而不是将该组单元格导出为PDF格式。

编辑:

为确保您可以在任意位置设置分页符,请将“屏幕环境”设置为“打印”(可以通过menu commandprogrammatically执行此操作),然后使用relevant menu command插入分页符。这个guide page可能会有所帮助。

根据您的评论,您需要为转换后的图片设置ImageSize选项,以确保它在屏幕上显示时所需的尺寸。