コード例 #1
1
/**
 * Handles the PDF Conversion
 */
function _print_pdf($html)
{
    global $wp_query;
    if (isset($wp_query->query_vars['pdf'])) {
        // convert to PDF
        $title = wp_strip_all_tags(get_the_title());
        $filename = $title . '.pdf';
        $cached = PDF_CACHE_DIRECTORY . $title . '-' . substr(md5(get_the_modified_time()), -6) . '.pdf';
        // check if we need to generate PDF against cache
        if (defined('DISABLE_PDF_CACHE') && DISABLE_PDF_CACHE || isset($_SERVER['HTTP_PRAGMA']) && $_SERVER['HTTP_PRAGMA'] == 'no-cache' || !file_exists($cached)) {
            // we may need more than 30 seconds execution time
            //set_time_limit(60);
            // include the library
            require_once 'vendor/autoload.php';
            // html to pdf conversion
            $dompdf = new Dompdf\Dompdf();
            $dompdf->setPaper(defined('DOMPDF_PAPER_SIZE') ? DOMPDF_PAPER_SIZE : DOMPDF_DEFAULT_PAPER_SIZE, defined('DOMPDF_PAPER_ORIENTATION') ? DOMPDF_PAPER_ORIENTATION : 'portrait');
            $options = $dompdf->getOptions();
            $options->set(array('fontDir' => DOMPDF_FONT_DIR, 'fontCache' => DOMPDF_FONT_CACHE, 'isHtml5ParserEnabled' => DOMPDF_ENABLE_HTML5, 'isRemoteEnabled' => DOMPDF_ENABLE_REMOTE));
            // allow setting a different DPI value
            if (defined('DOMPDF_DPI')) {
                $options->set(array('dpi' => DOMPDF_DPI));
            }
            $dompdf->setOptions($options);
            // allow other plugins to filter the html before passing it to dompdf
            $html = apply_filters('pdf_html_to_dompdf', $html);
            $dompdf->loadHtml($html);
            //$dompdf->setBasePath(get_stylesheet_directory_uri());
            $dompdf->render();
            if (defined('DISABLE_PDF_CACHE') && DISABLE_PDF_CACHE) {
                //just stream the PDF to user if caches are disabled
                return $dompdf->stream($filename, array("Attachment" => false));
            }
            // create PDF cache if one doesn't yet exist
            if (!is_dir(PDF_CACHE_DIRECTORY)) {
                @mkdir(PDF_CACHE_DIRECTORY);
            }
            //save the pdf file to cache
            file_put_contents($cached, $dompdf->output());
        }
        //read and display the cached file
        header('Content-type: application/pdf');
        header('Content-Disposition: inline; filename="' . $filename . '"');
        header('Content-Transfer-Encoding: binary');
        header('Content-Length: ' . filesize($cached));
        header('Accept-Ranges: bytes');
        readfile($cached);
    } else {
        // print the HTML raw
        echo $html;
    }
    // kill php after output is complete
    die;
}