Zeigen Sie besonders große PDF-Dateien unter Linux an

460
TheChymera

Ich habe eine 18000x18000px-PDF-Datei, die ich über matplotlib generiere. Vor dem Drucken möchte ich eine Vorschau von mindestens 20% anzeigen. Leider habe ich bisher nichts ausprobiert:

  • evince öffnet es nur mit einer maximalen Zoomstufe von 1,3%. Dies ist, nachdem ich die Cachegröße (über den Dconf-Editor) auf ~ 500 MB erhöht habe - weitere Erhöhungen (ich habe bis zu 8 GB versucht) verbessern den maximalen Zoom nicht. Ich glaube, es gibt einen anderen Engpass, den ich nicht kenne.
  • mupdf schlägt mit fehl malloc of array (153904 x 615616 bytes) failed (integer overflow)
  • Inkscape nimmt nur meinen gesamten Arbeitsspeicher (16 GB) auf und friert dann ein.

Ich habe alternativ versucht, es als SVG-Datei zu exportieren und mit inkscape zu öffnen, aber auch dies füllt meinen Arbeitsspeicher auf und friert dann ein (aber langsamer).

Ich habe auch versucht, die Datei in komplementäre Kacheln aufzuteilen, wobei die erste Iteration folgende ist:

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

Dies ist jetzt einige Stunden in Anspruch genommen worden und scheint nicht viel Fortschritte zu erzielen. Positiv ist jedoch, dass es nicht meinen gesamten RAM-Speicher verbraucht.

Matplotlib hat auch die Fähigkeit, PS zu exportieren - aber angesichts der größeren Größe von PS vermute ich, dass dies noch schlimmer werden würde.

Können Sie mir helfen, eine Vorschau meiner Datei unter Linux zu finden?

Wenn Sie die Datei ausprobieren möchten, finden Sie sie hier .

1
Welche Auflösung hat das von Ihnen erzeugte Bild? Erhöhen Sie es auf etwa 300 ppi. Acrobat Reader sollte es dann anzeigen können. Max Wyss vor 7 Jahren 0
18000x18000px (~ 300dpi) - Ich suche auch nach einer Linux-Lösung. und Adobe ist seit langem für Linux eingestellt worden. TheChymera vor 7 Jahren 0
Wie ist die Auflösung des Bildes? Die Größe beträgt 18000 x 18000 px; das ist seine absolute Größe. Es ist sehr wahrscheinlich, dass die Anwendung, die das Bild erstellt, die Auflösung auf 72 ppi festgesetzt hat, wodurch das Bild in eine Größe umgewandelt wird, die der PDF-Viewer nicht anzeigen kann. Überprüfen Sie also die Ausgabeoptionen der Erstellungssoftware und erhöhen Sie die Auflösung des Bildes auf 300 ppi (vielleicht sogar 600). Auch bin ich mir der Linux-Anforderungen voll bewusst. Zum Anzeigen und Drucken funktioniert der Adobe Reader 9 (der neueste von Adobe für Linux). Max Wyss vor 7 Jahren 0
Haben Sie versucht, einen Abschnitt mit Ghostscript in ein PNG-Format oder ein anderes Bildformat zu schneiden? Siehe zB [hier] (http://stackoverflow.com/questions/12484353/how-to-crop-a-section-of-a-pdf-file-to-png-using-ghostscript). `-dDownScaleFactor` und` -r` können ebenfalls nützlich sein, um den Speicherbedarf zu senken. dirkt vor 7 Jahren 0

1 Antwort auf die Frage

0
TheChymera

Wie in den Kommentaren angegeben, war die beste Lösung bisher, das PDF in PNG-Kacheln zu schneiden. Der grundlegende Befehl, um dies mit einem Ghost-Skript zu tun, lautet:

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

Ich habe ein Skript geschrieben, das den Namen und die Auflösung der PDF-Datei sowie die Größe der Kacheln als Eingabe übernimmt und nummerierte Kacheln ausgibt. Es ist ziemlich einfach und nimmt an, dass das Bild und die Fliesen quadratisch sind. Sie finden es auf GitHub .