【问题标题】:wordpress content PHP/html to PDF(domPDF). I need assistancewordpress 内容 PHP/html 到 PDF(domPDF)。我需要帮助
【发布时间】:2014-01-07 17:31:34
【问题描述】:

我刚刚接到命令“制作一个按钮,单击该按钮会在用户当前看到的页面之外创建一个 pdf。这是一家地毯公司,他们想要一个 PDF 按钮,单击该按钮会创建一个 pdf带有页面标题/地毯/地毯描述等。

需要明确的是,这都是在 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 -->

现在,我想做的是从页面中取出重要的部分,即内容包装器(包括循环)并将其粘贴到一个名为(如上所示)$htmlToPdf = //MY HTML HERE\\ ; 的 PHP 变量中,然后将该变量回显到页面(single.php)。这样,页面向用户显示正常,但额外的好处是内容现在位于变量中,因此当用户单击“创建 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 上正常显示?同时仍在使用我上面尝试的方法。

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

【问题讨论】:

    标签: php wordpress dompdf


    【解决方案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;
    ?>
    

    【讨论】:

    • 好吧,所以我决定先试试这个,我把它放进去,虽然内容显示了,但 $htmlTopdf 没有任何价值。当我将 $htmlTopdf 放入这样的 get 链接中时: LINK-HERE/createpdf.php?dom2pdf=$htmlToPdf" ,在 createpdf 文件上,使用 var 通过以下方式接收 get var: $toMakeIntoPdf = $_GET['dom2pdf' ]; ,当我单击按钮时,pdf 被正确创建,但不是显示内容,而是显示变量名本身。几乎在那里大声笑。还有什么想法我还缺少吗?
    • 究竟是哪个变量? $toMakeIntoPdf?
    【解决方案2】:

    我将使用 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 方法。

    【讨论】:

    • 你说“ajax”很有趣,我正在考虑使用 jquery lib 中的 $.get() 函数。本质上我想要它,以便在点击时,它会提出 pdf lib 来创建 pdf,而无需转到另一个页面,但是是的.......一次混乱哈哈。谢谢你的回复,我回家试试看
    • 您需要进行一些修复才能找到我认为生成的 PDF 的 URL。你可以在 $.post(); 的成功函数中得到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 2017-07-21
    • 2017-06-21
    • 1970-01-01
    • 2014-11-02
    • 2022-01-04
    相关资源
    最近更新 更多