How To: Simple domPDF Example

时间:2013-05-24 作者:clockwiseq

不太确定这里是否有人使用过DOMPF,但我需要帮助。有一个插件(post pdf export),可以使用dompdf将帖子导出为pdf。我只需要生成一些html(<html><body><p>PUT INVOICE HERE</p></body></html>) 并将其导出到PDF对象并将其附加到电子邮件。我已经得到了所有“正在执行”的代码,但生成的PDF不会在Adobe Reader中打开,但由post PDF export插件生成的PDF会打开。我不知道我错在哪里,但这里有一些基本知识(请有人告诉我我缺少什么):

1) 包括DOMPPDF类(在functions.php中):

    define(\'SSM_PLUGIN_PATH\' , plugin_dir_path(  __FILE__  ) );
    include(SSM_PLUGIN_PATH.\'/dompdf/dompdf_config.inc.php\' );
2)添加管理子菜单项并调用我的功能:

    add_submenu_page( 
        \'ssm_main_menu\', // Parent Slug
        \'Test PDF\', // Page Title
        \'Test PDF\', // Menu Title
        \'manage_options\', // Capability
        \'test-pdf\', // Menu Slug
        \'test_pdf_handler\' // Function
    );
3)函数将html导出为pdf:

function test_pdf_handler()
{
    $stuff = \'<html>
                <body>
                <p>
                    PLEASE WORK!!!
                </p>
            </body></html>\';
    set_time_limit(300);
    ini_set(\'memory_limit\', \'-1\');

    $dompdf = new DOMPDF();
    $dompdf->load_html($stuff);
    $dompdf->set_paper( \'letter\' , \'portrait\' );
    $dompdf->render();
    $dompdf->stream(\'sample.pdf\');

    exit();
}
4)结果-无法打开的PDF。。。

帮助

UPDATE: 更让人困惑的是,post-pdf插件dompdf目录可以完美加载,但当我直接从git获取dompdf包并将其包含在插件中时,它无法加载。如果有人不知道发生了什么,有人能推荐另一种在WordPress插件中用PHP生成PDF的解决方案吗?

UPDATE 2: 在创建一个空白插件来测试这一点(看看我的插件有什么错误)之后,我确实注意到了一个区别。我的插件使用短代码将内容推送到前端,所以我经常收到错误消息Warning: Cannot modify header information - headers already sent by (output started at H:\\.... 因此,为了解决这个问题,我在插件中添加了以下内容以清除该错误,但我相信这会导致PDF创建失败:

add_action(\'init\', \'do_output_buffer\');

function do_output_buffer() {
    ob_start();
}

1 个回复
最合适的回答,由SO网友:clockwiseq 整理而成

似乎我在页面生命周期中尝试创建PDF的时间太晚了。将此代码段添加到绑定到init的操作后,它就可以正常工作了。

结束

相关推荐

如何使主页菜单(首页)使用index.php而不是page.php

我在wordpress网站上需要一个“主页”菜单项,所以我创建了一个新页面并将其命名为“主页”,将其添加到我的主菜单项中,然后从阅读设置中选择“主页”作为首页。现在的问题是Home 正在使用page.php 而不是index.php. 我真的需要使用索引获取主页。php,因为我已经在索引中设计了首页。php你能告诉我如何使主页使用索引吗。php而不是页面。php