Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module ›

PDF-Erzeugung mit "PHP WK HTML to PDF"

Eingetragen von tetri999 (153)
am 08.06.2017 - 18:45 Uhr in
  • Module
  • Drupal 7.x

Hallo,

ich versuche, lokal (Win7, XAMPP 7, PHP 7) das DRUPAL-Module "phpwkhtmltopdf" zum Laufen zu bringen.
Dazu hab ich das benötigte "WkHtmlToPdf" installiert ('C:\Program Files\wkhtmltopdf').

Außerdem die LIBs wie im ReadMe beschrieben:

Zitat:

You basically want to make sure you have the following files:
* `[siteroot]/sites/all/libraries/phpwkhtmltopdf/src/Pdf.php`
* `[siteroot]/sites/all/libraries/php-shellcommand/src/Command.php`
* `[siteroot]/sites/all/libraries/php-tmpfile/src/File.php`

Unter status:

Zitat:

Verify the libraries are installed correctly by visiting your sites Status page (admin/reports/status).
You should see a reported version for the following items:
* PHPWkHtmlToPdf
* php-shellcommand
* php-tmpfile

ist alles OK.

Aber es passiert NICHTS!
D.h. ich habe ein Modul mit einem Aufruf

...
$pdf = new WkHtmlToPdf();
$pdf->addPage('<html>HELLO</html>');
dpm($pdf);
$pdf->send('test.pdf');
...
die $pdf-Variable wird ausgegeben, aber ohne weiteren Inhalt (page), und weiter passiert nichts, kein PDF - nirgends.

Hat jemand eine Idee, was hier vielleicht fehlt, welche Einstellungen wo vorgenommen werden müssen o.ä. ?

mfG, Michael

‹ Module die geeignet Sind für Dating Flirt Erotik Communitys Ubercart Google-Checkout-Problem ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, wohin sendest Du denn das

Eingetragen von Hyp1 (1461)
am 09.06.2017 - 08:07 Uhr

Hi,

wohin sendest Du denn das PDF?
Wenn Du es speicher möchtest solltest Du eher saveAs verwenden.

$pdf->saveAs('/path/to/report.pdf');

Schau mal hier:
https://github.com/mikehaertl/phpwkhtmltopdf

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das ist ja nur eine von mehreren Möglichkeiten,

Eingetragen von tetri999 (153)
am 09.06.2017 - 09:23 Uhr

keine der 3 funktioniert.

Zitat:

// ... or send to client as file download
$pdf->send('report.pdf');

damit hatte ich erwartet, daß ich einen download-Dialog kriege.

Ich weiß nicht, ob ich das Zusammenspiel der 3 Komponenten richtig verstanden bzw. richtig eingerichtet habe:
1: das "WkHtmlToPdf" unter 'C:\Program Files\wkhtmltopdf' (installiert mit "wkhtmltox-0.12.4_mingw-w64-cross-win64.exe")
2: das Drupal-Modul "phpwkhtmltopdf"
3: die dort erwähnten 3 libraries "PHPWkHtmlToPdf", "php-shellcommand" und "php-tmpfile", die unter "admin/reports/status" auch richtig erkannt werden

Der Aufruf in meinem Modul ist wie im ReadMe beschrieben:

<?php
if (($library = libraries_load('phpwkhtmltopdf')) && !empty($library['loaded'])) {
   
$pdf = new WkHtmlToPdf( array(
               
'ignoreWarnings' => true,
               
'commandOptions' => array(
                   
'escapeArgs' => false,
                   
'procOptions' => array(
                       
// This will bypass the cmd.exe which seems to be recommended on Windows
                       
'bypass_shell' => true,
                       
// Also worth a try if you get unexplainable errors
                        #'suppress_errors' => true,
                   
),
                ),
            ));
   
$pdf->addPage('<html>HELLO</html>');
       
dpm($pdf);
   
$pdf->send('test.pdf');
}
?>

Die pdf-Variable wird offenbar erzeugt, die Ausgabe dpm($pdf) liefert:

Zitat:

(Object) WkHtmlToPdf
binary (String, 38 characters ) C:\Program Files (x86)\wkhtmltopdf\bin
commandOptions (Array, 2 elements)
escapeArgs (Boolean) FALSE
procOptions (Array, 1 element)
bypass_shell (Boolean) TRUE
tmpDir (NULL)
ignoreWarnings (Boolean) TRUE
version9 (Boolean) FALSE

Die Methoden $pdf->addPage, $pdf->send ... scheinen überhaupt keinen Effekt zu haben, es gibt auch keine Fehlermeldung.

Es funktioniert übrigens auch ohne das options-Array nicht ( also nur mit $pdf = new WkHtmlToPdf(); )

Michael

NACHTRAG:
ich hatte auch "wkhtmltox-0.12.4_mingw-w64-cross-win32.exe" ausprobiert, das liegt dann unter "C:\Program Files (x86)\wkhtmltopdf",
beides auch mit und ohne "binary"-Element im options-Array.

  • Anmelden oder Registrieren um Kommentare zu schreiben

gelöst - aber neue Probleme:

Eingetragen von tetri999 (153)
am 12.06.2017 - 12:23 Uhr

nachdem ich das PDF-Generation-Tool "WkHtmlToPdf" (von "C:\Program Files (x86)\wkhtmltopdf") in das DRUPAL-Verzeichnis "\sites\all\libraries" kopiert habe und im PDF-Aufruf darauf verwiesen habe:

<?php
$pdf
= new WkHtmlToPdf(array(
    ...
   
'binary' => realpath(libraries_get_path('wkhtmltopdf')) . '\bin\wkhtmltopdf',
    ...
?>

, wird mit $pdf->saveAs('PATH\TO\test.pdf') tatsächlich ein PDF erzeugt.
Was immer noch nicht geht, sind $pdf->send('test.pdf'); und $pdf->send(); - also download-Dialog bzw. inline-display.
Frage 1: Warum nicht?
Vielleicht sollte ich dazu sagen, daß der PDF-Aufruf über AJAX aus jQuery läuft.

Ein anderes Problem:
Ich erzeuge also einen HTML-String mit $pdf->addPage('HELLO ... usw.');, aus dem dann das PDF erzeugt wird.
Dieser HTML-String wird aus verschiedenen DRUPAL-Inhalten zusammengesetzt, wozu auch images gehören, z.B. so:
<img src="' . realpath(path_to_theme(). '/images/logo.png') . '"></img>
Das geht auch, aber die Qualität ist deutlich schlechter, als bei den Originalen.
Frage 2: Gibt es eine Möglichkeit, die Qualität der eingebundenen Bilder zu beeinflussen?
Das wird übrigens auch nicht besser, wenn ich die Grafik über html { background:url("../images/logo.png") 0 0 no-repeat; } im CSS einbinde.

Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, zu Frage 1 Wohin

Eingetragen von Hyp1 (1461)
am 12.06.2017 - 12:34 Uhr

Hallo,

zu Frage 1
Wohin möchtest Du das PDF senden?

zu Frage 2
ein PDF ist generell komprimiert, daher ist die Qualität immer schlechter, als das Original
Die Kompressionsstärke sollte man je nach Library anpassen

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

das hatte ich doch in meiner ersten Antwort schon geschrieben,

Eingetragen von tetri999 (153)
am 12.06.2017 - 12:58 Uhr

in den Erläuterungen zum Drupal-Modul "phpwkhtmltopdf" steht unter Quickstart:

Zitat:

// ... or send to client for inline display
$pdf->send();

// ... or send to client as file download
$pdf->send('test.pdf');

damit erwarte ich die inline-Darstellung im Browser bzw. einen download- bzw. Speichern-unter-Dialog, oder verstehe ich das falsch?

zu 2: wo kann ich denn die Kompressionsstärke für das PDF einstellen?

mfG, Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo zu 1 Das ist ein HTML5

Eingetragen von Hyp1 (1461)
am 12.06.2017 - 13:13 Uhr

Hallo

zu 1
Das ist ein HTML5 Feature, das Du das PDF nun auf dem Server gepeichert hast kannst Du es einbetten
https://stackoverflow.com/questions/14081128/how-can-i-embed-a-pdf-viewer-in-a-web-page

zu 2
Das kommt auf die Library an. Im Fall von wkhtmltopdf könnte
--disable-pdf-compression*
etwas bewirken
https://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf-0.9.9-doc.html

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

OK, vielen Dank

Eingetragen von tetri999 (153)
am 14.06.2017 - 13:13 Uhr

an HTML5 hatte ich nicht gedacht, das geht natürlich auch anders.

zur Kompression bzw. Auflösung:
In dem HTML-String gibt es z.B. auch ein Image – ein PNG in A4 Größe (210x297mm) mit 300 dpi (als Hintergrund für die ganze Seite).
Wenn ich das so einbinde, ist es sehr viel größer als die Seite, d.h. ich muß ihm explizit eine Größe zuweisen, und zwar mit einem Faktor.
Dieser Faktor ist bei mir lokal 1.3 und auf unserem Server 1 / 1.6.
Was bedeutet das?
Die Angaben

<?php
'page-width' => '2480px',
'page-height' => '3507px',
'page-size' => 'A4',
'dpi' => 300,
?>
im DRUPAL-Aufruf haben keine Auswirkung.
'disable-pdf-compression' gibt lokal einen Fehler und online auch keine Wirkung.

mfG, Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, aus meinem alten

Eingetragen von Hyp1 (1461)
am 14.06.2017 - 14:05 Uhr

Hi, aus meinem alten Wiki.
Auflösungen werden wie folgt errechnet:
Druckgrössen in welcher Auflösung?

bei 72 dpi (Monitorauflösung) wären es:
595 x 842 pixel
bei 300 dpi (Druckqualität) hingegen:
2480 x 3508 pixel
kannst du ganz einfach selbst errechnen:

dpi = dots per inch
1 inch = 2,54 cm
DIN A4 = 21,0 x 29,7 cm
also: 21 / 2,54 = 8,27 x 72 = 595

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

ja, vielen Dank, das war mir

Eingetragen von tetri999 (153)
am 14.06.2017 - 15:14 Uhr

ja, vielen Dank, das war mir auch klar, meine Frage war:

das Image hat die Größe 2480 x 3508 pixel bei 300 dpi.
FRAGE: wie kriege ich das PHP-Tool WkHtmlToPdf (aus dem DRUPAL-Modul "phpwkhtmltopdf" heraus) dazu, das auch in dieser Größe A4-füllend als PDF auszugeben?
- ohne dem img eine skalierte Größe zuweisen zu müssen, in meinem Fall:
w = 2480 / 1.6 = 1550px
h = 3508 / 1.6 = 2192px
so:
<img src="' . realpath(path_to_theme(). '/images/imgTitle.png') . '" width="1550px" height="2192px"></img>
funktioniert es, aber woher kommt dieser Faktor 1 / 1.6 ?
das kann doch nur an den Grundeinstellungen des PHP-Tools WkHtmlToPdf liegen, und da komme ich aus DRUPAL nicht ran.

Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, du hast Dir die Grösse

Eingetragen von Hyp1 (1461)
am 14.06.2017 - 16:18 Uhr

Hi,

du hast Dir die Grösse doch selbst ausgerechnet,
damit es auf ein A4 passt.
So wie es aussieht ist Dein Image 1/1.6 grösser, als dass es in ein A4 Blatt passt?

MfG

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

NA EBEN NICHT !

Eingetragen von tetri999 (153)
am 14.06.2017 - 17:02 Uhr

das Image ist 2480px mal 3507px bei 300 dpi,
das ist genau A4 - sehe ich in PhotoShop.
Ich muß es um 1.6 kleiner machen, damit es in das von WkHtmlToPdf erzeugte PDF paßt.
Warum denn?
Das sieht doch so aus, als würde das PDF-Tool eine andere Größe oder Auflösung erzeugen oder erwarten ???

Michael

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, schau mal hier, der

Eingetragen von Hyp1 (1461)
am 15.06.2017 - 10:10 Uhr

Hi,

schau mal hier, der letzte Komment erklärt das vielleicht:
https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1520

Gruss

Robert

https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Meldung zu Token im Statusbericht
  • Fehlermeldung: Deprecated function
  • Versenden von Anfragen per Webform
  • Goodbye Online Drupal Meetup Germany - Hello Drupal DACH Online Meetup!
  • Übersetzte Felder bei Inhaltstyp automatisch übernehmen
  • Content Ex-/Import
  • RESTful Path request will nicht
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Wer ist online Block
  • Doppelte Anzeige von Node im View
  • URL-Alias von bestehendem Link wird gelöscht und auf -0 gesetzt 404 Fehler entsteht
  • Ausblenden von Taxonomy wenn diese keinen Inhalt haben
Weiter

Neue Kommentare

  • Gut zu wissen. Demnächst
    vor 33 Minuten 6 Sekunden
  • Token Fehler behoben
    vor 52 Minuten 25 Sekunden
  • Du hast völlig recht, da habe
    vor 5 Stunden 50 Minuten
  • Link 404
    vor 9 Stunden 28 Minuten
  • Die Datei existiert ja auch
    vor 12 Stunden 50 Minuten
  • Patch für Metatag
    vor 13 Stunden 3 Minuten
  • Link auf Pfad/Menü eines View
    vor 13 Stunden 16 Minuten
  • Die englische Übersetzung
    vor 15 Stunden 12 Minuten
  • Genau das habe ich auch
    vor 1 Tag 11 Stunden
  • Tja, das kann ich wirklich
    vor 1 Tag 12 Stunden

Statistik

Beiträge im Forum: 245967
Registrierte User: 18826

Neue User:

  • finnster
  • Damian1802
  • MrWebMV

» Alle User anzeigen

User nach Punkten sortiert:
wla9010
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 3 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association