
我有一個透過 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
現在已經花了幾個小時了,似乎沒有取得太多進展,從好的方面來說,它並沒有耗盡我所有的記憶體。
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 上。