Javascript 从单个DIV创建PDF

Javascript 从单个DIV创建PDF,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,编辑:DOMPDF不是必需的。欢迎使用任何其他从DIV打印PDF的解决方案。 我有一个基于单页DOM的web应用程序,该DOM在登录时加载一次 然后,页面上的每个操作都会触发一些div来加载不同的内容和php页面,以便使用PDO和AJAX与mysql交互 我的问题如下: 每个php页面将只回显需要适合该特定DIV的HTML 用户要求之一是,打印PDF时可能只考虑特定的DIV(包含内容的主要DIV)。我选择了DOMPDF来完成这项工作,但它需要一个有效的html标记来运行,而不仅仅是一个部分 我的

编辑:DOMPDF不是必需的。欢迎使用任何其他从DIV打印PDF的解决方案。

我有一个基于单页DOM的web应用程序,该DOM在登录时加载一次

然后,页面上的每个操作都会触发一些div来加载不同的内容和php页面,以便使用PDO和AJAX与mysql交互

我的问题如下:

每个php页面将只回显需要适合该特定DIV的HTML

用户要求之一是,打印PDF时可能只考虑特定的DIV(包含内容的主要DIV)。我选择了DOMPDF来完成这项工作,但它需要一个有效的html标记来运行,而不仅仅是一个部分

我的想法是:添加一个复选框来选择PDF格式,我使用相同的ajax调用,但将其重定向到一个新的php页面,该页面将回显完整的html标记

关键是,结果应该在一个新页面(或iframe???)中打开,以便DOM PDF正确解析

如何得到这一点

我的实际AJAX调用:

$('#livesearch').on("click",'a', function(event){
    event.preventDefault();
    var tip = $(this).attr("href");
    var descr = $(this).text();
    $('#anag_search').val(descr);
    $('#livesearch').hide();
    if ($('#pdfprint').prop('checked')) {
        $('#upper').load('sofferenze/soff_pdf.php?soff='+tip);      
    }else{
        $('#upper').load('sofferenze/soff.php?soff='+tip);      
    }

});
这是在与普通ajax调用相同的div中加载soff_pdf.php页面

怎么说“打开一扇崭新的窗户”??还是有更好的方法来获得我想要的? soff_pdf.php(相关部分):


开发系统


信贷包括内拉索菲伦萨 奇洛拉法里信贷银行 索菲伦萨 GBV 数据GBV Titolare 塞列 数据Acq。 塞登特 蒂波 发起人 斯塔托 加共体信贷银行


假设您正在打开一个弹出窗口或新选项卡,或者您喜欢客户端的任何内容,并且您希望重复使用已回显html的相同脚本:

if ($create_pdf_flag) ob_start();

echo 'some html...';
echo 'some more html...';
echo 'some other html...';
echo 'yet some more html...';

if ($create_pdf_flag) {
    $contents = ob_get_contents();
    ob_end_clean();

    $html = file_get_contents('/path/to/your/template.html');
    $html = str_replace('{contents}', $contents, $html);

    $DOMPDF = new DOMPDF();
    $DOMPDF->load_html($html);
    $DOMPDF->render();
    $DOMPDF->stream('Filename.pdf', array(
        'compress'      => 1,
        'Attachment'    => 0
    ));
}
模板可以很简单,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>PDF Output</title>
        <style>
            /* your style here */
        </style>
    </head>
    <body>
        {contents}
    </body>
</html>

几次压缩html。

您并不是真正在做ajax。可能重复Ok,但这不是重点。我只是将一段HTML而不是完整的DOM加载到另一个页面中,事实并非如此。如果您阅读了我要寻找的问题,即从单个div.DOMPDF works服务器端输出pdf的最佳方式,那么打开新窗口/tab/popup/iframe/向其提供DOMPDF输出的任何内容都不会有任何问题。只需在服务器端处理它。也许您应该展示使用DOMPDF的代码。这可能是一个有效的解决方案。你对客户有什么建议?Iframe或new window或我喜欢的任何东西,因为没有最好的解决方案:)?您回答自己:)我个人更喜欢一个新选项卡,因为它让用户(或用户的浏览器)决定打开或保存pdf。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>PDF Output</title>
        <style>
            /* your style here */
        </style>
    </head>
    <body>
        {contents}
    </body>
</html>
<?php if ($create_pdf_flag) { ?>
   some html here
 <?php } ?>