Finden Sie die Bildauflösung in einer PDF-Datei?

15

Ich habe das Problem, dass einige Benutzer sehr große PDFs erstellen. Andererseits habe ich PDF-Dateien von unseren Faxgeräten gesendet, die sehr klein und vollständig druckbar sind. Meine Frage ist

  • Gibt es eine Möglichkeit, die Auflösung (DPI) des PDF zu finden? Ich suche im Internet, konnte keine Antwort finden. Überprüfte die Eigenschaften der Datei, diese Informationen wurden dort zumindest in meinem Fall nicht gespeichert.
  • Was ist die optimale Auflösung für die Konvertierung von Textdateien in Bild-PDF. 96 dpi, 300 dpi oder mehr?
  • Lustige Frage. Kann ich die Größe einer PDF-Datei, die mit hoher Auflösung gescannt wurde, in eine kleinere Auflösung ändern?

Ich weiß, dass einige Antworten möglicherweise nicht verfügbar sind, da ich bereits im Internet gesucht und keine Antworten gefunden habe.

Hinweis: Meine PDF-Dateien bestehen ausschließlich aus Bildern, Text zu Bildern. Ich bin auch mit primoPDF (kostenlos) vertraut, mit dem man experimentieren kann

hk_
quelle

Antworten:

18

Die Antwort von slhck und der Kommentar von scruss verdienen eine Aktualisierung: pdfimagesJetzt (zumindest seit Version 0.26.5) werden x-ppiund explizit aufgelistet y-ppi. Hier ist eine Beispielausgabe:

$ pdfimages -list example.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    2244  2244  cmyk    4   8  image  no       215  0   301   301  418K 2.1%
   2     1 image     900   600  rgb     3   8  image  no       324  0  1524  1525 35.5K 2.2%

Auf Debian (Wheezy) und Fedora (23) pdfimagesist Teil von poppler-utilsPaketen.

Skippy le Grand Gourou
quelle
Meine sind alle leer
theonlygusti
8

Ich weiß, dass Sie die Bilddaten nicht extrahieren möchten, aber dies ist wahrscheinlich der einzige Weg, um die ursprüngliche Auflösung herauszufinden.


Unter * nix, wenn Sie ImageMagick's identifyund Xpdf installiert haben 1 :

pdfimages -j test.pdf test && for file in $(find . -name "test*.jpg"); do identify "$file"; done

Wo test.pdfist Ihre Eingabe PDF. Die Ausgabedateien werden geschrieben test-000.jpg, test-001.jpgund so weiter. Dies würde Ihnen die Originalgröße aller enthaltenen Bilder dieses PDF 2 geben .

Beispielausgabe für eine PDF-Datei, die nur ein großes Bild enthält:

./test-000.jpg JPEG 2500x1961 2500x1961+0+0 8-bit DirectClass 1.022MB 0.000u 0:00.000

1) Windows hat diese auch, aber das Skript wäre natürlich anders.
2) Beachten Sie, dass Bilder keine DPI-Informationen enthalten. Einfach ausgedrückt: Dies wird nur zum Drucken verwendet, und Bilder benötigen kein inhärentes Maß für die DPI.


Was ist die optimale Auflösung für die Konvertierung von Textdateien in Bild-PDF. 96 dpi, 300 dpi oder mehr?

Im Allgemeinen sollte alles, was Sie drucken möchten, 300 dpi oder mehr betragen. Die meisten Drucker verarbeiten auch eine höhere Auflösung.

slhck
quelle
2
Eine Version von pdfimages (vielleicht aktueller als die ursprünglichen Frage) aus dem poppler Projekt fügt die -Liste Option: pdfimages -list test.pdf. Anstatt Dateien auszugeben, werden Größe und Bildtyp aufgelistet. Gibt Ihnen immer noch keine explizite Auflösung, vermeidet jedoch das Erstellen von Ausgabedateien.
Scruss
1
@scruss Ab Version 0.34.0 pdfimages -listbietet explizit x-ppiund y-ppisowie viele andere Informationen.
Skippy le Grand Gourou
In der Tat, @SkippyleGrandGourou: ungefähr fünf Jahre nachdem die Frage gestellt wurde. pdfimages wendet diese Auflösung / Größe jedoch immer noch nicht auf Bilder an, die extrahiert werden.
Scruss
@scruss Eigentlich scheint es, dass die von gegebene Auflösung pdfimagesziemlich falsch sein kann (z. B. wenn das Bild in einem von produzierten PDF größer als sein sichtbarer Bereich ist scribus). (Leider habe ich jetzt wirklich keine Zeit, einen Fehlerbericht einzureichen.)
Skippy le Grand Gourou
4

Aus irgendeinem Grund ist die neueste Version von pdfimages, die ich in meinem CentOS aktualisieren kann, Version 3.04.

Daher habe ich nicht die Option -list, wie in den vorherigen Antworten angegeben. Das aus PDF-Bildern erstellte Testbild, das auf der Antwort von slhck basiert, enthält jedoch die gewünschte Antwort!

identifiziere -verbose test-0000.jpg | Mehr

Image: test-0000.jpg  
Format: JPEG (Joint Photographic Experts Group JFIF format)  
Mime type: image/jpeg  
Class: DirectClass  
Geometry: 6600x5100+0+0  
Resolution: 600x600  
Print size: 11x8.5

Daher wird die dpi in der 6. Zeile explizit mit der Option -verbose im Befehl identify angezeigt.

Die Antwort von slhck kann also wie folgt geändert werden.

pdfimages -j test.pdf test && für Datei in $ (find. -name "test * .jpg"); identifiziere -verbose "$ file" | awk 'NR == 6'; erledigt

In einem anderen Punkt habe ich versucht zu rennen

identifiziere -verbose test.pdf

Format: PDF (Portable Document Format)  
Mime type: application/pdf  
Class: DirectClass  
Geometry: 792x612+0+0  
Resolution: 72x72  
Print size: 11x8.5  

Es scheint, dass Imagemagick immer 72 dpi annimmt und die hier gedruckten Informationen daher falsch zu sein scheinen.

Kykong
quelle
1

Eine PDF-Datei hat keine inhärente Auflösung. Jedes darin enthaltene Rasterbild (falls vorhanden) hat eine eigene Auflösung. Ich kenne keine einfache Möglichkeit, eine einzelne Zahl für die mittlere / modale Auflösung von XObjects mit eingebettetem Bild zu extrahieren.

RedGrittyBrick
quelle
Übrigens bin ich nicht daran interessiert, Bilddaten aus PDF zu extrahieren, ich möchte nur wissen, wie hoch die Scanauflösung war, und wenn sie sehr hoch ist, möchte ich dies in Zukunft unnötigerweise vermeiden.
hk_
@ Dave: Eigentlich wollte ich die Informationen über die eingebetteten Bilder extrahieren, nicht das Bild extrahieren. Aber die Antwort von slhck kann Ihr Problem lösen.
RedGrittyBrick
1

Dies funktionierte mit einem PDF, das aus einem Kyocera-MFP generiert wurde ... Dies gilt wahrscheinlich nur für ganzseitige Bilder wie Scans.

  1. Öffnen Sie das PDF mit Reader-
  2. Datei> Eigenschaften - Registerkarte "Beschreibung" - Seitengröße. In meinem Beispiel stand 8,5 x 11,0 Zoll.

  3. Öffnen Sie das PDF mit einem Texteditor (Notizblock), suchen Sie nach /widthund/height

  4. Nehmen Sie die Höhe und Breite und teilen Sie sie durch die Seitenhöhe und -breite (in Zoll).

Beispiel:

5100/8.5=600
6600/11.0=600

Mein PDF wurde mit einer Auflösung von 600 x 600 gescannt.

Sie können die ersten beiden Schritte überspringen, wenn Sie die Dokumentgröße kennen (normalerweise ist A4 8,27 x 11,69).

Jeff21050
quelle
0

Um Ihren zweiten Punkt zu beantworten: Zusätzlich zu @slhcks Erwähnung von Drucker-dpi ist 300 dpi auch die typische empfohlene Mindestanzahl für OCR mit Schriftgrößen von 10 + pt.

Darüber hinaus hat ein moderner 15 "4K-Laptop-Bildschirm nur etwa 280PPi. Wenn Sie also einen gesamten A4 auf dem Bildschirm (Querformat) anzeigen möchten, ist es nicht sinnvoll, mit mehr als ~ 320 dpi zu scannen, da jedes Dokument höher ist verkleinert. Natürlich spielt dies keine Rolle, wenn Sie zoomen möchten, dann benötigen Sie möglicherweise eine höhere Auflösung.

Um Ihre beiden anderen Punkte zu beantworten, können Sie heutzutage zumindest Acrobat Pro verwenden, um die Bild-DPI und -Auflösung zu überprüfen, und Sie können sie auch bearbeiten.

Jiggunjer
quelle