我目前正在开发的wordpress插件中实现一个pdf导出功能,但是当我点击导出按钮时生成的pdf文件是空的。要实现导出,我使用FPDF库
我将使用FPDF的代码放在由wp_ajax_动作钩子执行的函数中。以下是代码:
SetFont('arial','b',14);
$pdf->AddPage();
$pdf->Cell(40,10,'Referrer URL',1,0,'C');
$pdf->Cell(40,10,'User IP Address',1,0,'C');
$pdf->Cell(40,10,'User Agent',1,0,'C');
$pdf->Cell(40,10,'Browser',1,0,'C');
$pdf->Cell(40,10,'OS',1,0,'C');
$pdf->Output();
wp_die();
}
add_action('wp_ajax_pdf_pull','pdf_pull_wpse_212972'); 以下是当我单击导出按钮时执行的jQuery代码
jQuery(document).ready(function($) {
jQuery('#pdf-export-btn').click(function(){
var data = {
'action': 'pdf_pull',
};
jQuery.post(tclisecure.ajax_url, data, function(response) {
var downloadLink = document.createElement("a");
var fileData = [response];
var blobObject = new Blob(fileData,{
type: "application/pdf"
});
var url = URL.createObjectURL(blobObject);
downloadLink.href = url;
downloadLink.download = "tracked_info.pdf";
/*
* Actually download PDF
*/
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
});
});
});发布于 2022-05-12 14:20:14
这可能解决不了问题,但您目前所做的事情看起来不必要地复杂(ajax请求、假链接、通过链接单击等方式提供PDF )。
为什么不只是一个按钮的链接..。
Download然后,...and直接从服务器下载PDF (使用WP的一般POST/GET处理程序admin-post.php):
function wpse_212972_pdf() {
$pdf = new FPDF('p','mm','a4');
$pdf->SetFont('arial','b',14);
$pdf->AddPage();
$pdf->Cell(40,10,'Referrer URL',1,0,'C');
$pdf->Cell(40,10,'User IP Address',1,0,'C');
$pdf->Cell(40,10,'User Agent',1,0,'C');
$pdf->Cell(40,10,'Browser',1,0,'C');
$pdf->Cell(40,10,'OS',1,0,'C');
// http://www.fpdf.org/en/doc/output.htm
$pdf->Output( 'D', 'tracked_info.pdf' );
exit;
}
add_action( 'admin_post_wpse_212972_pdf', 'wpse_212972_pdf' );
// Non-logged-in users (remove if not required)
add_action( 'admin_post_nopriv_wpse_212972_pdf', 'wpse_212972_pdf' );https://wordpress.stackexchange.com/questions/405655
复制相似问题