
matplotlib で生成した 18000x18000px の PDF ファイルがあります。印刷する前に、少なくとも 20% のズームでプレビューしたいのですが、残念ながら、これまで試した方法はすべてうまくいきませんでした。
- evince は最大ズーム レベル 1.3% でのみ開きます。これは、キャッシュ サイズを (dconf エディター経由で) 約 500 MB に増やした後です。さらに増やしても (最大 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 タイルに切り取ることでした。ゴースト スクリプトを使用してこれを行うための基本的なコマンドは次のとおりです。
gs -o out.png -sDEVICE=pngalpha -g2000x2000 -dLastPage=1 -c "<</Install {-1000 -10000 translate}>> setpagedevice" -f in.pdf
私は、PDFの名前と解像度、タイルのサイズを入力として受け取り、番号付きのタイルを出力するスクリプトを作成しました。これはかなり基本的なもので、画像とタイルが正方形であると想定しています。GitHubで。