Javascript 从单个DIV创建PDF
编辑: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调用: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标记来运行,而不仅仅是一个部分 我的
$('#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 } ?>