php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.09.2008, 11:50  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 14
grafik2 befindet sich auf einem aufstrebenden Ast
Standard html2ps: url als pdf rendern und datei speichern

Hallo,

ich benutze html2ps html2ps and html2pdf - Convert HTML to PostScript or PDF. Supports over 500 HTML and CSS tags and properties. um pdfs on the fly zu generieren. Mit untenstehemdem Code ist es mir möglich ein URL als PDF zu rendern und im Browser anzuzeigen. Hier funktionieren relative Pfade der CSS-Dateien und Bilder ohne Probleme. Nun würde ich dieses PDF aber lieber auf dem Server speichern. Weiß jemand wie ich untenstehenden Code dahingehend erweitern muss, ich war bisher ohne Erfolg.

Vielen Dank



C O D E
PHP-Code:
<?php

$url2render
=$_GET['url2render']; // URL OF PAGE TO RENDER
$pName=$_GET['pName']; // Name of PDF




require_once(dirname(__FILE__).'/../config.inc.php');
require_once(
HTML2PS_DIR.'pipeline.factory.class.php');
parse_config_file(HTML2PS_DIR.'html2ps.config');

global 
$g_config;
$g_config = array(
                  
'cssmedia'     => 'screen',
                  
'renderimages' => true,
                  
'renderforms'  => false,
                  
'renderlinks'  => true,
                  
'mode'         => 'html',
                  
'debugbox'     => false,
                  
'draw_page_border' => false
                  
);

$media Media::predefined('A4');
$media->set_landscape(false);
$media->set_margins(array('left'   => 0,
                          
'right'  => 0,
                          
'top'    => 5,
                          
'bottom' => 5));
$media->set_pixels(1024);

global 
$g_px_scale;
$g_px_scale mm2pt($media->width() - $media->margins['left'] - $media->margins['right']) / $media->pixels;

global 
$g_pt_scale;
$g_pt_scale $g_px_scale 1.43

$pipeline PipelineFactory::create_default_pipeline("",$pName);
$pipeline->configure($g_config);
$pipeline->process($url2render$media); 

?>

Geändert von grafik2 (03.09.2008 um 14:21 Uhr).
grafik2 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.09.2008, 14:09  
Erfahrener Benutzer
 
Registriert seit: 20.08.2008
Beiträge: 119
sharp befindet sich auf einem aufstrebenden Ast
Standard

Pack den Code bitte ma ins [php] Tag damit das ganze etwas übersichtlicher wird
sharp ist offline  
Alt 03.09.2008, 15:08  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 14
grafik2 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sharp Beitrag anzeigen
Pack den Code bitte ma ins [php] Tag damit das ganze etwas übersichtlicher wird
stimmt ist viel übersichtlicher...
grafik2 ist offline  
Alt 03.09.2008, 15:50  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich würde mal im Support-Forum zum Produkt nachfragen.
David ist offline  
Alt 03.09.2008, 16:14  
Erfahrener Benutzer
 
Registriert seit: 20.08.2008
Beiträge: 119
sharp befindet sich auf einem aufstrebenden Ast
Standard

Kannst du ma bitte per var_dump() den Inhalt von $pipeline ausgeben lassen und hier Posten vllt ist das da schon irgendwo drin ansonsten wie David schon sagt in deren Forum sich schlau machen.
PHP-Code:
$pipeline->process($url2render$media); 
echo 
"<pre>";
var_dump($pipeline);
echo 
"</pre>"
</span></span>
sharp ist offline  
Alt 03.09.2008, 16:37  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 14
grafik2 befindet sich auf einem aufstrebenden Ast
Standard

Code:
object(Pipeline)#177 (20) {
  ["fetchers"]=>
  array(1) {
    [0]=>
    object(FetcherUrl)#174 (14) {
      ["_connections"]=>
      array(0) {
      }
      ["protocol"]=>
      NULL
      ["host"]=>
      NULL
      ["port"]=>
      int(80)
      ["path"]=>
      NULL
      ["url"]=>
      NULL
      ["headers"]=>
      NULL
      ["content"]=>
      NULL
      ["code"]=>
      NULL
      ["redirects"]=>
      int(0)
      ["user"]=>
      NULL
      ["pass"]=>
      NULL
      ["error_message"]=>
      string(0) ""
      ["user_agent"]=>
      string(77) "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7) Gecko/20040803 Firefox/0.9.3"
    }
  }
  ["data_filters"]=>
  array(3) {
    [0]=>
    object(DataFilterDoctype)#168 (0) {
    }
    [1]=>
    object(DataFilterUTF8)#181 (1) {
      ["encoding"]=>
      string(0) ""
    }
    [2]=>
    object(DataFilterHTML2XHTML)#182 (0) {
    }
  }
  ["error_message"]=>
  NULL
  ["parser"]=>
  object(ParserXHTML)#183 (0) {
  }
  ["pre_tree_filters"]=>
  array(0) {
  }
  ["layout_engine"]=>
  object(LayoutEngineDefault)#184 (0) {
  }
  ["post_tree_filters"]=>
  array(0) {
  }
  ["output_driver"]=>
  object(OutputDriverFPDF)#185 (23) {
    ["pdf"]=>
    NULL
    ["locallinks"]=>
    NULL
    ["cx"]=>
    NULL
    ["cy"]=>
    NULL
    ["pdf_version"]=>
    string(3) "1.3"
    ["media"]=>
    NULL
    ["bottom"]=>
    NULL
    ["left"]=>
    NULL
    ["width"]=>
    NULL
    ["height"]=>
    NULL
    ["_watermark"]=>
    NULL
    ["offset"]=>
    NULL
    ["expected_pages"]=>
    NULL
    ["current_page"]=>
    NULL
    ["filename"]=>
    string(95) "/srv/www/vhosts/evolution-luftwerbung.de/httpdocs/a/plugins/html2pdf/public_html/temp/PS_eOmtRw"
    ["debug_boxes"]=>
    bool(false)
    ["show_page_border"]=>
    bool(false)
    ["error_message"]=>
    NULL
    ["_footnote_area_height"]=>
    int(0)
    ["_footnote_count"]=>
    int(0)
    ["_page_height"]=>
    NULL
    ["_postponed"]=>
    array(0) {
    }
    ["anchors"]=>
    array(0) {
    }
  }
  ["output_filters"]=>
  array(0) {
  }
  ["destination"]=>
  object(DestinationDownload)#186 (1) {
    ["filename"]=>
    NULL
  }
  ["_base_url"]=>
  array(1) {
    [0]=>
    string(0) ""
  }
  ["_page_at_rules"]=>
  array(5) {
    [0]=>
    array(0) {
    }
    [1]=>
    array(0) {
    }
    [2]=>
    array(0) {
    }
    [3]=>
    array(0) {
    }
    [4]=>
    array(0) {
    }
  }
  ["_counters"]=>
  array(0) {
  }
  ["_footnotes"]=>
  array(0) {
  }
  ["_cssState"]=>
  NULL
  ["_css"]=>
  array(0) {
  }
  ["_defaultCSS"]=>
  NULL
  ["_dispatcher"]=>
  object(Dispatcher)#176 (1) {
    ["_callbacks"]=>
    array(10) {
      ["before-page-heights"]=>
      array(0) {
      }
      ["before-page"]=>
      array(0) {
      }
      ["after-page"]=>
      array(0) {
      }
      ["before-batch-item"]=>
      array(0) {
      }
      ["after-batch-item"]=>
      array(0) {
      }
      ["after-parse"]=>
      array(0) {
      }
      ["before-document"]=>
      array(0) {
      }
      ["after-document"]=>
      array(0) {
      }
      ["before-batch"]=>
      array(0) {
      }
      ["after-batch"]=>
      array(0) {
      }
    }
  }
  ["_current_page_name"]=>
  NULL
  ["_page_break_strategy"]=>
  object(StrategyPageBreakSmart)#187 (0) {
  }
}
grafik2 ist offline  
Alt 03.09.2008, 16:46  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 14
grafik2 befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php

/**
 * Thanks for JensE for providing the code of fetcher class
 */

require_once(dirname(__FILE__).'/../config.inc.php');
require_once(
HTML2PS_DIR.'pipeline.factory.class.php');

error_reporting(E_ALL);
ini_set("display_errors","1");
@
set_time_limit(10000);
parse_config_file(HTML2PS_DIR.'html2ps.config');

/**
 * Handles the saving generated PDF to user-defined output file on server
 */
class MyDestinationFile extends Destination {
  
/**
   * @var String result file name / path
   * @access private
   */
  
var $_dest_filename;

  function 
MyDestinationFile($dest_filename) {
    
$this->_dest_filename $dest_filename;
  }

  function 
process($tmp_filename$content_type) {
    
copy($tmp_filename$this->_dest_filename);
  }
}

class 
MyFetcherMemory extends Fetcher {
  var 
$base_path;
  var 
$content;

  function 
MyFetcherMemory($content$base_path) {
    
$this->content   $content;
    
$this->base_path $base_path;
  }

  function 
get_data($url) {
    if (!
$url) {
      return new 
FetchedDataURL($this->content, array(), "");
    } else {
      
// remove the "file:///" protocol
      
if (substr($url,0,8)=='file:///') {
        
$url=substr($url,8);
        
// remove the additional '/' that is currently inserted by utils_url.php
        
if (PHP_OS == "WINNT"$url=substr($url,1);
      }
      return new 
FetchedDataURL(@file_get_contents($url), array(), "");
    }
  }

  function 
get_base_url() {
    return 
'file:///'.$this->base_path.'/dummy.html';
  }
}

/**
 * Runs the HTML->PDF conversion with default settings
 *
 * Warning: if you have any files (like CSS stylesheets and/or images referenced by this file,
 * use absolute links (like http://my.host/image.gif).
 *
 * @param $path_to_html String HTML code to be converted
 * @param $path_to_pdf  String path to file to save generated PDF to.
 * @param $base_path    String base path to use when resolving relative links in HTML code.
 */
function convert_to_pdf($html$path_to_pdf$base_path='http://www.google.de') {
  
$pipeline PipelineFactory::create_default_pipeline(''// Attempt to auto-detect encoding
                                                       
'');

  
// Override HTML source 
  // @TODO: default http fetcher will return null on incorrect images 
  // Bug submitted by 'imatronix' (tufat.com forum).
  
$pipeline->fetchers[] = new MyFetcherMemory($html$base_path);

  
// Override destination to local file
  
$pipeline->destination = new MyDestinationFile($path_to_pdf);

  
$baseurl '';
  
$media =& Media::predefined('A4');
  
$media->set_landscape(false);
  
$media->set_margins(array('left'   => 0,
                            
'right'  => 0,
                            
'top'    => 0,
                            
'bottom' => 0));
  
$media->set_pixels(1024); 

  global 
$g_config;
  
$g_config = array(
                    
'cssmedia'     => 'screen',
                    
'scalepoints'  => '1',
                    
'renderimages' => true,
                    
'renderlinks'  => true,
                    
'renderfields' => true,
                    
'renderforms'  => false,
                    
'mode'         => 'html',
                    
'encoding'     => '',
                    
'debugbox'     => false,
                    
'pdfversion'    => '1.4',
                    
'draw_page_border' => false
                    
);

  
$pipeline->configure($g_config);
  
$pipeline->process_batch(array($baseurl), $media);
}

convert_to_pdf(file_get_contents('ausgangsDatei.php'), 'ausgabe.pdf');

?>
Mit diesem Code ist es mir möglich ein URL als PDF zu rendern und als Datei auf dem Server zu speichern ABER hier gibt es Probleme mit den relativen Pfaden von Bildern + CSS, aus diesem Grund würde ich gerne das PDF speichern dass ich mit dem als erstes geposteten Code erzeugen kann.

Geändert von grafik2 (04.09.2008 um 08:19 Uhr).
grafik2 ist offline  
Alt 03.09.2008, 19:36  
Erfahrener Benutzer
 
Registriert seit: 20.08.2008
Beiträge: 119
sharp befindet sich auf einem aufstrebenden Ast
Standard

Versuch ma den Parameter $base_path in die Url zuändern von wo du die Daten herbeiziehst
PHP-Code:
function convert_to_pdf($html$path_to_pdf$base_path='>>HIER DIE ZIEL URL<<') { 
Und noch ma zum "altem" Code versuch doch ma $pipeline["fetchers"]["output_driver"]["filename"] weg zuspeichern da es mir so scheint als wenn der Script die Datei tempörar hinterlegt:
"
/srv/www/vhosts/evolution-luftwerbung.de/httpdocs/a/plugins/html2pdf/public_html/temp/PS_eOmtRw"

Geändert von sharp (03.09.2008 um 19:44 Uhr).
sharp ist offline  
Alt 04.09.2008, 09:12  
Neuer Benutzer
 
Registriert seit: 03.09.2008
Beiträge: 14
grafik2 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank schobnmal für die Vorschläge.

Also obwohl bei $base_path ja steht dass diese variable dazu dient relative pfade aufzulösen funktioniert das weder mit "http://www.meineDomain.de"; "http://www.meineDomain.de/";"http://www.meineDomain.de/ordnerDerZuRenderndenDatei";

@param $base_path String base path to use when resolving relative links in HTML code.


Werd jetzt mal noch $pipeline["fetchers"]["output_driver"]["filename"] im alten code checken.
grafik2 ist offline  
Alt 29.09.2008, 10:11  
Neuer Benutzer
 
Registriert seit: 29.09.2008
Beiträge: 3
kleinPhi befindet sich auf einem aufstrebenden Ast
Standard

Hallihallo.

Ich bin über Onkel Google auf dieses Thema gestoßen, und ich habe ein ähnliches Problem.
Ich möchte eine Seite als PDF speichern, jedoch funktioniert der erste Code bei mir gar nicht, also habe ich erstmal den zweiten ausprobiert. Der funktioniert auch soweit ganz gut, nur habe ich ein Problem: Die zu rendernde Page ist durch einen Login geschützt (inkl. Session-ID). Nun macht mir das Script immer ein PDF mit der entsprechenden Login-Seite als Inhalt. Wie bekomme ich das Script durch diesen Login geschleust?
Hat da jemand eine Idee?
kleinPhi ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Datei in MSSQL speichern mcules Datenbanken 16 17.09.2008 15:09
[Erledigt] $ Dollarzeichen in txt Datei speichern georgeharell PHP Tipps 2008 10 14.07.2008 21:33
Schleifenoutput in datei Speichern thecracked PHP Tipps 2008 21 20.06.2008 10:33
[Erledigt] inhalt einer Datei in Variable Speichern mupilz PHP Tipps 2008 6 31.05.2008 13:28
Quellcode einer dynamischen Seite kopieren und als Datei speichern Lothar PHP Tipps 2008 15 05.05.2008 23:32
Datei speichern bei MIR Uratuso PHP Tipps 2008 2 15.02.2008 19:19
String als Datei speichern Zangelo PHP Tipps 2006 23 25.08.2006 14:13
Musik Datei abspielen und parallel als MP3 speichern Plague Off-Topic Diskussionen 5 22.05.2006 19:17
dynamische Seite als htm datei speichern chrisbog PHP Tipps 2006 4 23.01.2006 22:11
Externe Datei auslesen und auf Webspace speichern Beitragsarchiv 9 19.04.2005 16:44
DUMP per Linux in ein Datei speichern!! Klaus Datenbanken 1 11.04.2005 08:12
geparste datei speichern PHP Tipps 2007 12 04.01.2005 17:01
Kontaktformular: Felder auslesen und in .txt datei speichern djrace PHP Tipps 2004-2 4 29.12.2004 13:56
TXT Datei Öffnen, lesen, beschreiben, speichern maximus PHP Tipps 2004-2 1 28.11.2004 19:15
daten in einer text datei speichern kain PHP Tipps 2004 12 25.11.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html2ps, html2ps php, html2ps/pdf, html2ps pdf, html2ps images, php seite als pdf speichern, html2ps css, url als pdf speichern, php html2ps, html2ps beispiel, php html2ps howto, html2ps url, php html seite als pdf speichern, html2ps bilder, php url to pdf, html2ps howto, html2ps beispiele, html2ps filename, php htmlseite als pdf drucken, url to pdf php

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum