Google Webfonts und PDF-Generierung aus HTML mit wkhtmltopdf

Lesezeit: 7 Minuten

Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
Mathieu Rodic

ich benutze wkhtmltopdf um HTML-Dateien in das PDF-Format zu konvertieren; Es liefert überraschend gute Ergebnisse und rendert das PDF genau so, wie es WebKit tun würde.

ich benutze Google Webfonts um Benutzern die Möglichkeit zu geben, das Erscheinungsbild des von ihnen bearbeiteten Dokuments anzupassen, indem ihnen die Möglichkeit geboten wird, zwischen einigen Schriftarten zu wählen. Es funktioniert auch perfekt in einem Browser.

Das Problem ist, dass ich die Google Fonts nicht zum Laufen bekomme, wenn ich solche HTML-Dateien mit wkhtmltopdf in PDF umwandele. Ich habe gelesen, dass andere Leute das gleiche hatten Ausgabe.

Könnte mir bitte jemand helfen, das zu beheben?

BEARBEITEN: Das Deklarieren von @font-face direkt im CSS funktioniert auch nicht.

1643225528 578 Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
Shaharia Azam

So konvertieren Sie HTML in PDF von wkhtmltopdf versuchen zu vermeiden woff Schriftart. Verwenden Sie die truetype Format der Google Web Fonts mit base64 kodieren.

Kürzlich habe ich versucht, einen Google Web Font von Google Web Fonts zu verwenden. Im Browser wird es korrekt angezeigt, aber nach der Konvertierung von HTML in PDF nicht.

Nachdem ich das Internet ausgiebig durchsucht hatte, fand ich endlich Tools zum Codieren von Schriftarten in die base64 Format und bekam auch CSS für @font-face.

Lesen Sie die Lösung Hier.

  • +1. Hinweis: wie in einem Kommentar auf der verlinkten Lösungsseite erwähnt: Es scheint nicht unter OS X (10.9) zu funktionieren, funktioniert aber unter Linux.

    – Pepijn Olivier

    2. Juni 14 um 12:05 Uhr

  • Es funktioniert gut in Windows und auch mit dem Node-Paket-Wrapper für wkhtmltopdf.

    – rjred

    10. Juli 14 um 15:28 Uhr


  • Dies funktioniert immer noch nicht mit komprimierten Schriftarten wie Roboto Condensed gemäß wkhtmltopdf-binary 0.12.3.1 mit gepatchtem QT. Vielleicht wegen des hartnäckigen Kerning-Bugs …?

    – genkilabs

    24. Februar 17 um 19:03 Uhr

  • Kannst du den Link aktualisieren? Seite existiert seit letztem Monat nicht mehr

    – Jeroen van Veghel

    23. März 18 um 10:04 Uhr

  • Wenn es immer noch nicht funktioniert, konvertieren Sie die Schriftart in eine Base64-Zeichenfolge!

    – Kopfbedeckung

    22. Januar 21 um 14:33 Uhr

Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
Arman H

Eine einfache Lösung: Base64-kodieren Sie Ihre Schriftart und betten Sie sie in das CSS ein:

@font-face {
    font-family: 'OpenSans';
    src: url(data:font/truetype;charset=utf-8;base64,AAEAAAATAQA...
}

FontSquirrel kann dies für Sie durch die erweiterten Optionen von FontSquirrel erledigen Webfont-Generator; Google- und andere Schriftarten können codiert werden mit diesem Werkzeug.

Ich habe diese Lösung mit verwendet pdfkit und wicked_pdf, die über wkhtmltopdf funktionieren, also nehme ich an, dass dies mit dem nativen funktionieren sollte wkhtmltopdf sowie.

  • Ich kann bestätigen, dass dies bei mir funktioniert hat, aber ich musste v0.10.0-rc2 von wkhtmltopdf für OS X verwenden. Die neuesten Versionen haben in dieser Hinsicht bei mir nicht funktioniert.

    – MetaSkills

    27. August 13 um 14:47 Uhr

  • @MetaSkills danke, dass Sie das erwähnt haben – ich stoße auf das gleiche Problem und es war die Hölle, Fehler zu beheben. wkhtmltopdf Ausführung 0.12.3 funktioniert einfach nicht mit benutzerdefinierten Schriftarten, wenn es unter OSX ausgeführt wird, scheint aber auf unseren Ubuntu-Staging- und Produktionsservern gut zu funktionieren.

    – Topher Hunt

    17. Februar 16 um 17:02 Uhr

  • @Topher Hunt Ich bin froh, dass ich auf Ihren Kommentar gestoßen bin. Ich habe dasselbe unter OSX erlebt, dass die Schriftart nicht funktioniert, aber wenn sie auf einem Ubuntu-Server bereitgestellt wird, funktioniert sie.

    – HastingsDirect

    12. März 20 um 16:35 Uhr

Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
Josef Erickson

Ich hatte dasselbe Problem und löste es, indem ich die Schriftarten herunterlud und sie mit dieser Schriftartdeklaration aus einer lokalen Datei auf meinem Webserver ausführte:

@font-face {
    font-family: 'PT Sans';
    src: url( '/public/inc/fonts/PTS55F-webfont.eot');
    src: url( '/public/inc/fonts/PTS55F-webfont.eot?#iefix') format('embedded-opentype'),
         url( '/public/inc/fonts/PTS55F-webfont.woff') format('woff'),
         url( '/public/inc/fonts/PTS55F-webfont.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}

Ich konnte diese Schriftart auf finden Schriftart Eichhörnchen, aber Ihr Kilometerstand kann variieren.

Ich denke, was mit den Schriftarten von Google passiert, ist, dass es versucht, nur das Format zu laden, von dem es glaubt, dass dieser Browser es wünscht, was für WebKit (glaube ich) schwach ist. Aber wkhtmltopdf kann keine Woff-Schriftart in eine PDF-Datei einbetten und wird daher standardmäßig wieder auf Sans-Serif zurückgesetzt. Indem Sie alle deklarieren, wird die TrueType-Schriftart eingeschlossen, die das PDF tatsächlich verwendet.

Außerdem müssen Sie die Schriftart, die Sie verwenden möchten, als erste in einer CSS-Definition für die Schriftartfamilie definieren, sonst wird wkhtmltopdf sie einfach ignorieren.

  • Gute Erklärung. Wenn Sie auf die GWF-Site gehen und die ZIP-Datei der Schriftart herunterladen, enthält sie die TTF-Datei, die wkhtmltopdf verarbeiten kann. Ich bin mir jedoch nicht sicher, ob alle Schriftarten auf GWF die TTF enthalten.

    – allein

    3. Februar 12 um 7:39 Uhr

  • Vielen Dank! Ich persönlich habe eine Problemumgehung gefunden, indem ich die Schriftarten (sie können aus einem Repository heruntergeladen werden) auf dem X11-Server meines Computers installiert habe.

    – Mathieu Rodic

    17. Februar 12 um 9:17 Uhr

  • Wenn jemand hierher kommt, während ich nach PISA PDF HTML Django-Problemen mit der Google Fonts-API suche, werfen Sie einen Blick auf: xhtml2pdf.appspot.com/static/pisa-en.html und verwenden Sie einfach die ttf-Datei

    – Andilabs

    22. August 14 um 19:37 Uhr

  • Noch eine Anmerkung zu PISA – Sie werden den Witz verstehen) gibt es ein wichtiges Problem beim Verknüpfen von Schriftarten in CSS. Auf dem Entwicklungsserver funktioniert es zB mit dem Linken zu Statics, aber auf der Produktion müssen Sie es nicht über http, sondern auf die lokale Datei verlinken, damit es funktioniert, also verwenden Sie für diesen Zweck zB MEDIA_ROOT.

    – Andilabs

    11. Oktober 14 um 22:19 Uhr


Ich habe das gerade mit dem getestet @importNotation funktioniert:

<style>
@import 'https://fonts.googleapis.com/css?family=Montserrat';
</style>

Ich verwende django-wkhtmltopdf Version 2.0.3

Ich habe jetzt seit ungefähr zwei Tagen damit zu kämpfen, mein Rat an Sie, wenn keine der obigen Antworten für Sie funktioniert:

Installieren Sie die Schriftart (ttf) auf dem Computer, der den Webserver hostet, und fordern Sie sie einfach im CSS an, genau wie Sie es mit einer gewöhnlichen Schriftart tun würden.

body{
    font-family: 'Lato';
}

Jetzt wkhtmltopdf sollte in der Lage sein, die Schriftart einzuschließen

  • Da er den Benutzern ermöglicht, die Schriftart, die sie verwenden möchten, anhand der verfügbaren Google-Schriftarten auszuwählen, könnte dies bedeuten, dass eine zunehmende Anzahl von Schriftarten installiert werden muss

    – gdvalderrama

    26. August 16 um 08:11 Uhr

  • Danke. Ich habe andere Antworten zum Einbetten einer riesigen Base64-codierten Schriftartzeichenfolge in meinen Code ausprobiert, halte das jedoch nicht für eine gute Idee. Endlich habe ich Schriftarten installiert, die ich brauche, da ich nicht zu viele Schriftarten brauche.

    – Kenshin

    29. März 18 um 23:31 Uhr


  • Könntest du bitte genauere Angaben machen, wie man es einbindet? Beispielsweise, src: {{ public_path('fonts/noto-sans.regular.ttf') }}; Wie hast du es importiert?

    – Pathos

    29. Januar 21 um 5:49 Uhr

1643225529 255 Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
jenson-button-event

Ich muss eine Unmenge von Variationen ausprobiert haben, um diese Arbeit zu bekommen (von lokal). Ich versuche, Open Sans Condensed über WKHtmlToPdf in ein PDF einzubetten.

Ich denke, es ist wichtig, dass Sie die Open Sans Condensed ttf direkt von Google herunterladen und installieren und installieren. Es ist auch wichtig, neu zu starten, um anderen Diensten nach der Installation Zugriff zu gewähren. Ich habe das ttf ursprünglich von font-squirrel heruntergeladen und Condensed wurde als “Open Sans” in Windows/Fonts aufgeführt, was falsch ist. Wenn Sie nach der Google-Installation suchen, wird es als “Open Sans Condensed Light” aufgeführt, also sogar von Google local('Open Sans Cond Light') Skript ist falsch.

Wie bereits erwähnt, müssen Sie die Dehnung und die Gewichte explizit angeben, also hat Folgendes für mich funktioniert:

    @font-face { 
     font-family: 'Open Sans'; 
     font-style: normal; 
     font-weight: 400; 
     src: local('Open Sans');
    }

    @font-face { 
     font-family: 'Open Sans Condensed'; 
     font-stretch:condensed; 
     font-style: normal; 
     font-weight: 300; 
     src: local('Open Sans Condensed Light');
    }

@@font-face { font-family: 'Open Sans Condensed Bold'; font-stretch:condensed; font-style: normal; font-weight: 700; src: local('Open Sans Condensed'), local('Open Sans Condensed Bold');}

  • Da er den Benutzern ermöglicht, die Schriftart, die sie verwenden möchten, anhand der verfügbaren Google-Schriftarten auszuwählen, könnte dies bedeuten, dass eine zunehmende Anzahl von Schriftarten installiert werden muss

    – gdvalderrama

    26. August 16 um 08:11 Uhr

  • Danke. Ich habe andere Antworten zum Einbetten einer riesigen Base64-codierten Schriftartzeichenfolge in meinen Code ausprobiert, halte das jedoch nicht für eine gute Idee. Endlich habe ich Schriftarten installiert, die ich brauche, da ich nicht zu viele Schriftarten brauche.

    – Kenshin

    29. März 18 um 23:31 Uhr


  • Könntest du bitte genauere Angaben machen, wie man es einbindet? Beispielsweise, src: {{ public_path('fonts/noto-sans.regular.ttf') }}; Wie hast du es importiert?

    – Pathos

    29. Januar 21 um 5:49 Uhr

1643225529 177 Google Webfonts und PDF Generierung aus HTML mit wkhtmltopdf
xtian

In meinem Fall musste ich diese Option nur hinzufügen

--javascript-delay 1000

und Google Font-Text wurde angezeigt.

[wkhtmltopdf 0.12.4 (with patched qt)]

.

650370cookie-checkGoogle Webfonts und PDF-Generierung aus HTML mit wkhtmltopdf

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy