我想要獲得HTML文件的PDF,我正在使用TCPDF生成PDF和AJAX來發送信息。現在,我只是試圖在頁面上獲得一個SVG的PDF,當我完成這些工作時,我會完成剩下的工作。無法使用AJAX下載使用TCPDF生成的PDF
問題是,TCPDF生成的PDF,而不是下載它,它將它傳遞給JavaScript COOL。當我不使用AJAX時,它完美無缺。
這裏是AJAX代碼:
// Get the d3js SVG element
var tmp = document.getElementById("elemPD5graf");
var svg = tmp.getElementsByTagName("svg")[0];
// Extract the data as SVG text string
var svg_xml = (new XMLSerializer).serializeToString(svg);
var j = jQuery.noConflict();
var parameters = { datos : svg_xml };
j.ajax({
type: 'POST',
url: 'generarPDF.php',
data : parameters,
success: function(result) {
console.log(result);
}
});
這裏是PHP代碼:
<?php
// Include the main TCPDF library (search for installation path).
require_once('..\tcpdf\tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 058', PDF_HEADER_STRING);
// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// ---------------------------------------------------------
// set font
$pdf->SetFont('helvetica', '', 10);
// add a page
$pdf->AddPage();
// NOTE: Uncomment the following line to rasterize SVG image using the ImageMagick library.
//$pdf->setRasterizeVectorImages(true);
$svg2 = $_POST['datos'];
$pdf->ImageSVG($file='@'.$svg2, $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false);
// ---------------------------------------------------------
//Close and output PDF document
$pdf->Output('nuevo.pdf', 'D');
//============================================================+
// END OF FILE
//============================================================+
?>
在此先感謝您的幫助。
您是否嘗試保存pdf並返回保存的文件的URL,而不是返回pdf的內容? – Timothy
@Timothy通過PHP代碼上的'Output'方法,保存PDF。它適用於我不使用AJAX的情況。 –
您正在使用輸出法D'',這會將文檔發送到您的瀏覽器並開始下載。當你通過AJAX調用收到它時,這不會起作用。 – Timothy