PDF Weiße Ränder Entfernen
Ich würde gerne wissen, einen Weg, um weiße Ränder entfernen aus einer PDF-Datei. Genau wie Adobe Acrobat X Pro. Ich verstehe, es funktioniert nicht mit jedem PDF-Datei.
Ich würde vermuten, dass die Art und Weise, es zu tun, ist, indem Sie die text-Ränder, dann zuschneiden aus, dass die Margen.
PyPdf ist bevorzugt.
iText text findet Margen basierend auf diesem code:
public void addMarginRectangle(String src, String dest)
throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
TextMarginFinder finder;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
finder = parser.processContent(i, new TextMarginFinder());
PdfContentByte cb = stamper.getOverContent(i);
cb.rectangle(finder.getLlx(), finder.getLly(),
finder.getWidth(), finder.getHeight());
cb.stroke();
}
stamper.close();
}
InformationsquelleAutor jacktrades | 2012-05-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht allzu vertraut mit PyPDF, aber ich weiß, Ghostscript wird in der Lage sein, dies für Sie tun. Hier sind einige links zu anderen Antworten auf ähnliche Fragen:
Die Dritte Antwort ist wohl, was Sie sagen, 'ich verstehe, es funktioniert nicht mit jeder PDF-Datei'. Es verwendet die pdfmark Befehl, um zu versuchen und legen Sie die
/CropBox
in die PDF-Seite Objekte.Die Methode der ersten beiden Antworten wird am ehesten gelingen, wo die Dritte schlägt fehl. Diese Methode verwendet einen PostScript-Befehl snippet
<</PageOffset [NNN MMM]>> setpagedevice
zu verschieben und platzieren Sie die PDF-Seiten auf eine (kleinere) Medien Größe definiert durch die-gNNNNxMMMM
parameter (die definiert, Gerät die Breite und Höhe in Pixel).Wenn Sie verstehen, das Konzept hinter den ersten beiden Antworten, werden Sie leicht anpassen zu können, die verwendete Methode, es zu beschneiden Ränder an allen 4 Kanten einer PDF-Seite:
Einen Beispiel-Befehl, um einen Ausschnitt aus einem letter PDF (8.5x11in == 612x792pt) durch einen halben Zoll (==36pt) auf jeder der 4 Kanten (Befehl ist für Windows):
Die resultierende Seite wird die Größe 7.5x10in (== 540x720pt). Das gleiche zu tun, auf Linux oder Mac, Verwendung:
Update: Wie zu bestimmen, "Ränder", mit Ghostscript
Einen Kommentar gebeten, für den " automatischen Bestimmung von weissen Rändern. Sie können Ghostscript ist auch für diese. Seine
bbox
Gerät bestimmen kann, der Bereich, der durch die (virtuelle) Tinte auf jeder Seite (und damit indirekt der Leerzeichen für jede Kante der Leinwand).Hier ist der Befehl:
Ausgabe (Beispiel):
Den
bbox
Gerät macht jede PDF-Seite in den Speicher (ohne das schreiben von output-to-disk) und dann druckt der BoundingBox und HiResBoundingBox info zustderr
. Sie können diesen Befehl ändern, wie, um die Ergebnisse einfach zu analysieren:Ausgabe (Beispiel):
Diese würden Sie sagen...
[57 29]
mit der rechten oberen Ecke an[562 741]
[57 28]
mit der rechten oberen Ecke an[561 667]
Bedeutet dies:
72pt == 1in == 25,4mm
).Wie Sie sehen können von diesem einfachen Beispiel bereits, das Leerzeichen ist nicht genau das gleiche für jede Seite. Je nach Ihren Bedürfnissen (Sie wollen wahrscheinlich die gleiche Größe für jede Seite eines mehrseitigen PDF -, Nein?), Sie haben, um herauszufinden, was sind die minimalen Seitenränder, die für jede Kante auf allen Seiten des Dokuments.
Nun, was über die rechten und oberen Rand whitespace? Zu berechnen, müssen Sie wissen, die ursprüngliche Seite, die Größe jeder Seite. Die am meisten einfache Weise, dies zu bestimmen: die
pdfinfo
- Dienstprogramm. Beispiel-Befehl für eine 5-seitige PDF-Datei:Ausgabe (Beispiel):
Dies wird Ihnen helfen zu bestimmen, die erforderlich canvas Größe und die gewünschte (maximale) weiße Ränder an der oberen und rechten Kanten von jedem Ihrer neuen PDF-Seiten.
Diese Berechnungen können alle Skript erstellt werden, natürlich auch.
Aber wenn Sie Ihre PDF-Dateien sind alle von einem uniq Größe der Seite, oder wenn Sie sind 1-Seite dokumentiert, es ist alles viel einfacher zu erledigen...
Wie können Sie automatisch wissen, wo die weißen Ränder sind?
Natürlich können Sie iText, wenn Sie mögen. Fühlen Sie sich frei. Jedoch, für iText Sie müssen schreiben Sie ein Java-Programm unter Verwendung der iText-API, um es zu tun. Mit Ghostscript können Sie bleiben in der Sphäre der Skript-Programmierung, welche ich bevorzuge in Fällen wie diesem...
Kann immer noch nicht verstehen, wie man die pdf-Margen. iText hat eine ähnliche Sache wie oben geschrieben.
Ich habe gerade überprüft --
bbox
Gerät für einige seltsame Grund nutzt eine Standard-Auflösung von 4000 dpi. Ich hatte immer vermutet, es würde verwenden 72 dpi. (Ich überprüft läuftgs -o /dev/null -sDEVICE=bbox -c "currentpagedevice {exch ==only ( ) print ==} forall quit" | grep -i resolution
. Siehe auch "Abfragen von Ghostscript für die Standard-Optionen/Einstellungen, die von einem Ausgabegerät (wie 'pdfwrite' oder 'tiffg4')".InformationsquelleAutor Kurt Pfeifle
Versuchen pdfcrop. Es muss ghostscript.
In Bezug auf die "große Datei" - problem in die Kommentare blog post, die Sie vorschlagen, zu verwenden
pdfcrop --xetex --resolution 72 [other-options] input.pdf output.pdf
um es zu lösen.Kostenlos, schnell, automatisch und korrekt identifiziert die Margen, vorinstalliert. Genau das, was ich brauchte.
InformationsquelleAutor Martin Schröder