Ich verwende eine TCPDF, um PDF-Dokumente zu generieren, und ich versuche, ein Logo in die Kopfzeile hinzuzufügen, aber ich habe ein Problem mit der Bildqualität und später, wie ich herausgefunden habe, mit der Skalierung auch.
Die Bilder, die mit TCPDF in PDF-Dokumente eingefügt werden, leiden unter Qualitätsverlusten und Größenproblemen. Es interessiert mich nicht so sehr für die Größe, weil ich es ändern kann, aber ich kann die Qualität des Bildes nicht wiederherstellen.
Was ich versucht habe:
$pdf->Image()
wurden entfernt und alles im Standardbild belassen
Größe erhöht auf (vermutlich) Originalgröße bei gleichen Qualitätsproblemen. Dies ist der Code, mit dem ich ein Bild einfüge:
%Vor% Und das ist der Anfang von createPDF()
function:
Irgendwelche anderen Empfehlungen?
Alternative: Ich bin bereit, TCPDF mit jedem anderen PDF-Generator zu ändern, wenn es HTML-Tabellen unterstützt und Bilder mit besserer Qualität einfügen kann.
Ihre Hilfe wird sehr geschätzt werden.
Vergrößern Sie die definierte Breite, um das Bild zu vergrößern . Sie scheinen die Standardeinheiten von mm zu verwenden, sodass Sie eine Breite von 35 mm angeben. Wenn Sie ein größeres Bild wünschen, ändern Sie diese Zahl auf die gewünschte Breite.
Beginnen Sie für ein besseres Bild mit einem größeren Bild. Sie müssen vielleicht experimentieren, aber versuchen Sie 1,53 mal größer. Wenn Sie es zu groß machen, kann es beim Skalieren abgehackt aussehen.
Ich würde PNG verwenden. Das PNG-Format eignet sich besser für Bilder mit Text und Volltonfarben, wie Sie sie dort haben. Aber wenn Sie JPG verwenden möchten, dann versuchen Sie, die Bildqualität mit der SetJPEGQuality zu erhöhen () Methode. Ich glaube, der Standardwert ist 75.
Wenn Sie eine Dimension angeben, wird der Bildskalierungswert nicht verwendet. Wenn Sie die Größe nicht explizit angeben möchten, legen Sie den Skalierungsfaktor entsprechend mit der setImageScale ()
Hinweis: Die Beschreibung in den Dokumenten für setImageScale () ist irreführend, IMO. Es hat nichts wirklich damit zu tun, Pixel in Benutzereinheiten umzuwandeln. Diese Konvertierung wird intern vom Skript übernommen.
Achten Sie darauf, dass das Bild bei allen Zoomstufen nicht gut aussieht, unabhängig davon, was Sie tun. Sie können die anfängliche Zoomstufe mit der Methode SetDisplayMode () festlegen. TCPDF verwendet standardmäßig die Seitenbreite, die auf den meisten modernen Desktops und Laptops mehr als 100% beträgt.
Die an die Methode Image () übergebenen Dimensionen verwenden die definierten Benutzereinheiten (Standard ist mm). Zwar gibt es einige technische Unterschiede zwischen dpi und ppi, sie gelten jedoch nur für den Druck.
Also für unsere Zwecke:
%Vor%Wenn Sie also ein Bild mit einer Breite von 40 mm wünschen, erstellen Sie ein Bild mit einer Breite von 173 Pixeln.
%Vor%Wenn die Bildqualität wirklich wichtig ist, sollten Sie eines der Vektorformate in Betracht ziehen. Überprüfen Sie das TCPDF-Handbuch für ImageSvg () oder ImageEps () Methoden.
Fußnoten
Ich hatte das gleiche Problem und auch keiner der vorherigen Vorschläge hat mir geholfen. Meine Rettung war THIS . Das Geheimnis besteht darin, Ihr PDF-Logo als Vorlage zu verwenden. Sehen Sie sich das Ergebnis mit dem Google-Logo an:
1) Sie benötigen eine PDF-Logoversion 1.4 (die aktuellen PDF-Versionen werden nicht unterstützt ). Wählen Sie dazu ein qualitativ hochwertiges png, jpeg, Logo und konvertieren Sie mit diese Website .
2) FPDI-Bibliothek herunterladen .
3) Folgen Sie den Anweisungen des ersten Links, und ich kopiere hier:
%Vor%Nun, ich weiß, dass dies eine alte Frage ist, aber für den Fall, dass jemand um diese herum stolpert, wie ich, empfehle ich, PNG-Bilder mit 150 dpi zu verwenden. Ich kann dies aus meiner persönlichen Erfahrung mit TCPDF sagen. Ich werde normalerweise gebeten, Dokumente mit einem Hintergrundbild zu machen, und ein PNG-150dpi passt gut. Sie erhalten eine größere Datei, aber in meinem Fall ist die Druckqualität wichtiger, daher ist die Dateigröße kein Problem.