wordpress内容PHP / html到PDF(domPDF)。我需要帮助

时间:2014-01-07 17:31:34

标签: php wordpress dompdf

我刚刚接到命令“点击一个按钮,在用户当前看到的页面之外创建一个pdf。这是一家地毯公司,他们想要一个PDF按钮,点击后,将创建一个pdf页面标题/地毯/地毯desciption等。

要明确的是,这一切都在Wordpress中使用动态数据。我没有找到一个可以做我想要的插件,我会手动尝试。

总的来说,这就是我尝试过的:

我这样做的方式如下: - 我正在使用DOMPDF。通过以下内容,它可以创建pdf。它位于名为 “createpdf.php”的文件中

$htmlToPdf = //MY HTML HERE\\ ;

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

阅读$htmlToPdf = //MY HTML HERE\\ ;的部分是我的HTML所在的位置。

现在因为这是WordPress,我通过简单的WP循环生成页面内容,如下所示:

<!-- post starts here -->
        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="post">
            <h2 class="post-title"><?php the_title(); ?></h2>
            <span class="meta"><?php _e('Published'); ?> <?php the_time('F j, Y'); ?> <?php _e('in'); ?> <?php the_category(', ') ?></span>
            <div class="entry">
                <?php the_content(); ?>
            </div><!-- end entry -->
        </div><!-- end post -->
        <?php endwhile; endif;?>
<!-- post ends here -->

现在,我想要做的是从页面中获取重要的部分,即内容包装器(包括循环)并将其粘贴到一个名为的PHP变量中(如上所示)$htmlToPdf = //MY HTML HERE\\ ;然后回显出来变量到页面上(single.php)。这样,页面就像用户BUT一样正常显示内容现在位于变量中的附加好处,这样当用户点击“创建pdf按钮”时,它将获取该页面的当前内容并将其发送到“ createpdf.php“来自按钮

等。 然后我可以做:

$htmlToPdf = $_GET['maketopdf']; 

并将$ htmlToPdf推向pdf创作。

我很困惑大声笑....

所以我把内容放在一个变量中:

 <?php 
$htmlToPdf = '
<!-- post starts here -->

        <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
        <div class="post">
            <h2 class="post-title"><?php the_title(); ?></h2>

            <div class="entry">
                <?php the_content(); ?>
            </div><!-- end entry -->
        </div><!-- end post -->
        <?php endwhile; endif;?>
<!-- post ends here --> ';

echo $htmlToPdf;
?>

现在的问题是,不是我没有出现页面错误,但内容列上也没有显示。页面加载正常,但内容应该是,它出来是空的。

我怎样才能在single.php上正常显示?虽然仍在使用上面尝试的方法。

希望这不会太混乱。 任何帮助是极大的赞赏。谢谢你提前。

2 个答案:

答案 0 :(得分:1)

总是有这种丑陋的解决方法......

<?php
$htmlToPdf = '';
if (have_posts()){
    while (have_posts()){
        the_post(); 
        $htmlToPdf .= '<div class="post">';
        $htmlToPdf .= '<h2 class="post-title">'.the_title().'</h2>';
        $htmlToPdf .= '<div class="entry">';
        $htmlToPdf .= the_content();
        $htmlToPdf .= '</div><!-- end entry -->';
        $htmlToPdf .= '</div><!-- end post -->';
    }
}
echo $htmlToPdf;
?>

答案 1 :(得分:0)

我将使用JS / jQuery获取当前页面源并将其发送到您的php脚本(生成PDF的人):

$('.yourButton').click(function(e){
   e.preventDefault();
   var dataToSend = document.documentElement.outerHTML;
   $.post('/path/to/your/DOMPDFfile.php', {data: dataToSend});
   window.open('path/to/the/generated.pdf');
});

然后你的DOMPDF文件:

$htmlToPdf = $_POST['data']; ;

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

请注意,它使用jQuery AJAX方法。