在 Linux 上查看超大 PDF 文件

在 Linux 上查看超大 PDF 文件

我有一个通过 matplotlib 生成的 18000x18000px PDF 文件。打印之前,我想预览它,至少缩放 20%。遗憾的是,到目前为止,我尝试过的所有方法都不起作用:

  • evince 只会在最大缩放级别 1.3% 时打开它。这是在我将缓存大小(通过 dconf 编辑器)增加到 ~500MB 之后 - 进一步增加(我尝试过增加到 8 GB)并不能改善最大缩放。我相信还有其他一些我不知道的瓶颈。
  • mupdf 失败malloc of array (153904 x 615616 bytes) failed (integer overflow)
  • Inkscape 占用了我所有的 RAM(16 GB)然后冻结了。

我也曾尝试将其导出为 SVG 并使用 inkscape 打开它,但是这也会填满我的 RAM 然后冻结(但速度较慢)。

另外,我尝试将文件划分为互补的图块,第一次迭代如下:

pdfcrop --verbose --margins "10 10 10000 10000" --clip g.pdf out1.pdf

这已经花了几个小时了,但似乎没有取得太大的进展,从好的方面来说,它并没有耗尽我所有的 RAM。

Matplotlib 也具有导出 PS 的能力 - 但考虑到 PS 的规模较大,我怀疑情况会变得更糟。

你能帮我找到一种在 Linux 下预览文件的方法吗?

如果你想尝试一下这个文件,你可以找到它这里

答案1

正如评论中指出的那样,迄今为止最好的解决方案是将 PDF 裁剪为 PNG 图块。使用 ghost 脚本执行此操作的基本命令是:

gs -o out.png -sDEVICE=pngalpha -g2000x2000 -dLastPage=1 -c "<</Install {-1000 -10000 translate}>> setpagedevice" -f in.pdf

我继续编写了一个脚本,该脚本可以将 PDF 的名称和分辨率以及图块大小作为输入,并输出编号的图块。它相当基础,假设图像和图块是正方形。你可以找到它在 GitHub 上

相关内容