2014-09-17 14 views
10

Kann mir jemand sagen, wie ich die folgenden Probleme beheben kann?Wie behandelt man ContentNotFoundError bei der Verwendung von wkhtmltopdf?

  1. wkhtmltopdf haben keine Option Proxy-Informationen zu übergeben (-p oder --proxy) anders als in früheren Versionen und es ist nicht mit System $ http_proxy und zu $ ​​https_proxy env Variable.

  2. wkhtmltopdf arbeiten nicht mit HTTPS/SSL, obwohl ich LD_LIBRARY_PATH für libssl.so gesetzt und libcrypto.so

    [[email protected] ~]$ wkhtmltopdf https://www.google.co.in google.pdf 
    loaded the Generic plugin 
    Loading page (1/2) 
    Error: Failed loading page https://www.google.co.in (sometimes it will work just to ignore this error with --load-error-handling ignore) 
    Exit with code 1 due to network error: UnknownNetworkError 
    

    und

    [[email protected] ~]$ wkhtmltoimage https://www.google.co.in sample.jpg 
    loaded the Generic plugin 
    Loading page (1/2) 
    Error: Failed loading page https://www.google.co.in (sometimes it will work just to ignore this error with --load-error-handling ignore) 
    Exit with code 1 due to network error: UnknownNetworkError 
    
  3. wkhtmltopdf teilweise mit HTTP arbeiten. Die Ausgabe-PDF-Dateien fehlen einige Inhalt/Hintergrund/Positionen.

    [[email protected] ~]$ wkhtmltopdf http://localhost:8880/ sample.pdf 
    loaded the Generic plugin 
    Loading page (1/2) 
    Printing pages (2/2)            
    Done               
    Exit with code 1 due to network error: ContentNotFoundError 
    
    [[email protected] ~]$ wkhtmltoimage http://localhost:8880/ sample.jpg 
    loaded the Generic plugin 
    Loading page (1/2) 
    Rendering (2/2)              
    Done                
    Exit with code 1 due to network error: ContentNotFoundError 
    

Hinweis: Im mit wkhtmltopdf-0.12.1-1.fc20.x86_64 und qt-4.8.6-10.fc20.x86_64

+0

Diese wirklich klingen wie Bugs, die am besten von Ashkulz im Github Issue Tracker beantwortet werden würden, ich denke, dein bestes Glück wird dort fragen. – Nenotlep

+0

Siehe: [Exit mit Code 1 wegen Netzwerkfehler: ContentNotFoundError # 2051] (https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2051) – kenorb

Antwort

2

Leider wkhtmltopdf nicht das Herunterladen von komplexen Griff Websites, weil es Qt/QtWebKit-Bibliothek verwendet, die einige Probleme zu haben scheint.

Ein Problem ist, dass wkhtmltopdf nicht relative Adressen unterstützt (GitHub: #1634, #1886, #2359, QTBUG-46240) wie:

<img src="/images/filetypes/txt.png"> 
<script src="//cdn.optimizely.com/js/653710485.js"> 

und es lädt sich als lokal. Eine Lösung, die ich dazu gefunden habe, ist die Korrektur von HTML-Datei an Ort und Stelle von ex in-Place-Editor:

ex -V1 page.html <<-EOF 
    %s,'//,'http://,ge 
    %s,"//,"http://,ge 
    %s,'/,'http://www.example.com/,ge 
    %s,"/,"http://www.example.com/,ge 
    wq " Update changes and quit. 
EOF 

Allerdings wird es nicht für Dateien arbeiten, die diese Art von URLs auf der Fernbedienung.

Ein weiteres Problem ist, dass es fehlende Ressourcen nicht behandelt. Sie können versuchen, --load-error-handling ignore anzugeben, aber in den meisten Fällen funktioniert es nicht (siehe #2051), so dass dies noch aussteht. Problemumgehung besteht darin, diese ungültigen Ressourcen vor der Konvertierung zu entfernen.

Alternativ zu wkhtmltopdf, können Sie entweder htmldoc, PhantomJS mit einigen zusätzlichen Skript zum Beispiel rasterize.js mit verwenden:

phantomjs rasterize.js http://example.com/ 

oder dompdf (HTML to PDF Converter für PHP, können Sie von dem Komponisten installieren) mit Probe code unten:

<?php 
// somewhere early in your project's loading, require the Composer autoloader 
// see: http://getcomposer.org/doc/00-intro.md 
$HOMEDIR = "/Users/foo"; 
require $HOMEDIR . '/.composer/vendor/autoload.php'; 

// disable DOMPDF's internal autoloader if you are using Composer 
define('DOMPDF_ENABLE_AUTOLOAD', FALSE); 
define('DOMPDF_ENABLE_REMOTE', TRUE); 

// include DOMPDF's default configuration 
require_once $HOMEDIR . '/.composer/vendor/dompdf/dompdf/dompdf_config.inc.php'; 

$htmlString = file_get_contents("https://example.com/foo.pdf"); 

$dompdf = new DOMPDF(); 
$dompdf->load_html($htmlString); 
$dompdf->render(); 
$dompdf->stream("sample.pdf"); 
+1

Es ging die gleiche Weise, die Sie hier erwähnten, auch ich lernte relativ kennen Ressourcenpfade, defekte Links etc nach ein wenig mehr Arbeit auf wkhtmltopdf. Ich habe mein Problem mit Phantomjs-Skripten behoben. –

0

mein problem wurde gelöst @ font-face aus css entfernen.