1

html2pdfでPDFを生成しようとしています。関数自体にマークアップを作成してPDFを作成することはできますが、本当にやりたいのは、URLを使用して別のファイルからマークアップを含めることです。

私が持っているコードはPDFを生成しますが、PDFは空白です。これは、HTMLが指定されたURLからプルされていないことを意味すると思います。

require_once('html2pdf/html2pdf.class.php');
$mlsnum = $_GET['mlsnum'];
$url = 'http://www.nexthometown.com/components/com_singleprop/views/singleprop/tmpl/scripts/oh_usda.php?mlsnum='.$mlsnum;
$html2pdf = new HTML2PDF('P', 'A4', 'en');
$html2pdf->getHtmlFromPage($url);
$html2pdf->Output($mlsnum.'.pdf','D');

html2pdfに精通している人はいますか?ドキュメントと例を確認しましたが、このメソッドへの参照が見つかりません。ここで定義を見つけましたが、あまりわかりません。

4

2 に答える 2

3

http://html2pdf.fr/en/default このライブラリは、HTMLページを直接変換するのではなく、PDFファイルの作成を支援するために作成されました。<html>、、タグ<head>は使用できません<body>

于 2013-01-22T19:35:48.817 に答える
2

質問は少し古いですが、これがgetHtmlFromPageメソッドから空白のページを解決する方法です。getHtmlFromPageメソッドを使用する代わりに、curlを使用してpdfしたいページを取得し、それを文字列としてhtml2pdfに渡しました。

require_once 'path_to_html2pdf/html2pdf/html2pdf.class.php';
$str_url = 'http://your_url_here.php';
$str_content = get_page($str_url); //get_page can be file_get_contents if your server allows for that function to open a url or a curl function that im posting down below
try{
    $html2pdf = new HTML2PDF('P', 'A4', 'es');
    $html2pdf->pdf->SetDisplayMode('fullpage');
    $html2pdf->writeHTML($str_content );
    $html2pdf->Output('your_file_name.pdf', 'D'); //The 'D' option downloads the pdf instead of just showing it on screen
}
catch(HTML2PDF_exception $e) {
    echo $e;
    exit;
}

//Here is the curl function for get_page
function get_page($str_url){
    if(strpos($str_url, 'http://') === false){
        return file_get_contents($str_url);
    }else{
        if(ini_get('allow_url_fopen')){
            return file_get_contents($str_url);
        }else{
            $curl = curl_init();
            curl_setopt ($curl, CURLOPT_REFERER, strFOARD);
            curl_setopt ($curl, CURLOPT_URL, $str_url);
            curl_setopt ($curl, CURLOPT_TIMEOUT, 30);
            curl_setopt ($curl, CURLOPT_USERAGENT, sprintf("Mozilla/%d.0",rand(4,5)));
            curl_setopt ($curl, CURLOPT_HEADER, 0);
            curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
            $html = curl_exec ($curl);
            curl_close ($curl);
            return $html;
        }
    }
}
于 2013-11-19T14:18:51.323 に答える