2017-11-13 2 views
0

Ich möchte mit Python fpdf einige längere Bilder einfügen (jedes Bild kann auf 2 Seiten erweitert werden). Die Bilder werden jedoch nicht auf der nächsten Seite fortgesetzt, sobald ein Seitenumbruch ausgelöst wird. Wie kann ich den Rest der Bilder beginnend mit einem gegebenen Wert set_y auf die nächste Seite drucken (Header inklusive)?Seitenumbrüche für Bilder in Python fpdf

+0

können Sie Bildgröße als Seitengröße ändern. So wird das Bild in einer einzelnen Seite sein. Sie können den Seitenumbruch nicht beseitigen. – TheUnknown

+0

Bildqualität ist wichtig. Momentan versuche ich die Bilder zu teilen und einzufügen, aber es gibt viele Bugs und Performing-Effekte. Anyways Antwort mit einem Codebeispiel kann helfen. –

Antwort

3

Obwohl ich glaube, es gibt einen Weg mit fpdf, schlage ich vor, Sie wechseln zu pdfkit/wkhtmltopdf basierten Lösung.

Ich habe viele ähnliche Probleme mit reportlab, die sehr ähnlich ist fpdf, dann wechselte zu wkhtmltopdf, fühlt sich viel besser an.

Mit wkhtmltopdf, können Sie Layout mit Standard-Web-Stack steuern, verwenden Sie CSS und Javascript, verwenden Sie eine bevorzugte Vorlage-Engine, dann konvertieren HTML-Datei in PDF, einfacher und viel mächtiger.

+0

kann nicht wechseln, weil ich die gesamte Vorlage in fpdf (fast 300 Zeilen) getan habe. –

+0

Wir haben ein ~ 2500 Zeilen reportlab-basiertes Projekt nach wkhtmltopdf migriert, aber die Anzahl der Codezeilen ist nicht gleich der Wartungsschwierigkeit, HTML/CSS ist wesentlich einfacher zu debuggen. – georgexsh

-1

Nur ein Beispiel meiner obigen Kommentar,

from fpdf import FPDF 
from PIL import Image 

pdf = FPDF() 
pdf.add_page() 

im = Image.open('1.jpg') 
width_img, height_img = im.size 

#mm = (pixels * 25.4)/dpi 
# - 25.4 millimeters in an inch 
w = (width_img*25.4)/300 
h = (height_img*25.4)/300 

pdf.image('1.jpg',0,0,w,h) 
pdf.output("yourfile.pdf", "F") 
+1

Wie bricht diese Bearbeitungsseite überhaupt? –

+0

Der obige Code behandelt keinen Seitenumbruch. Es ist nur ein Beispiel für meinen vorherigen Kommentar. – TheUnknown

+0

Dann * setze das in deinen answe *. Und sicherlich können Sie Bilder partitionieren, um sie auf mehreren Seiten zu platzieren. –

0

Wenn Ihr pdf-Dataset eine Datenfolge ist, können Sie für die "\r" Suche starten und/oder (mehrfach) '\n' character (s) mit dem folgenden Code:

chrs = ['\r', '\n', '\n\n'] 

for item in chars: 
    pdf-data.replace(item) 

bei seinen formatieren Strings in einer Liste:

list = pdaf-data 

for list-item in list: 
    for list-item in chars: 
     pdf-data.replace(item) 

Wenn Sie direkt aus einer Datei lesen, verwenden Sie "Datei öffnen, etc" und readline().