javascript - 无法使用 AJAX 下载 TCPDF 生成的 PDF

标签 javascript php jquery ajax tcpdf

我想要获取 HTML 文件的 PDF,我正在使用 TCPDF 生成 PDF 并使用 AJAX 发送信息。现在,我只想在页面上获取一个 SVG 的 PDF,当我完成此操作后,我将完成其余的工作。

问题是 TCPDF 生成 PDF,但不是下载它,而是将其传递给 javascript 控制台。当我不使用 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
//============================================================+
?>

预先感谢您的帮助。

最佳答案

$returnValue = $pdf->Output($name, $destination);

$destination 可以采用以下值之一:

I: send the file inline to the browser (default). The name given by name is used when one selects the "Save as" option on the link generating the PDF.

D: send to the browser and force a file download with the name given by name.

F: save to a local server file with the name given by name.

S: return the document as a string (name is ignored).

FI: equivalent to F + I option

FD: equivalent to F + D option

E: return the document as base64 mime multi-part email attachment (RFC 2045)

错误无法创建输出文件意味着 TCPDF 无法将您的文档写入您的文件夹。在 $name 中提供有效路径。

关于javascript - 无法使用 AJAX 下载 TCPDF 生成的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37542696/

相关文章:

javascript - 为什么使用自执行函数?

javascript - 如何将多个脚本合并为一个?

php - Bootstrap 3 在 Symfony3 中不起作用

php - 删除多维数组中具有相同键的重复值并将唯一值存储到另一个数组

javascript - AJAX 调用后未触发语义 UI 复选框事件

javascript - 几个元素的 jQuery .after 函数

javascript - 如何比较两个数组并从第一个数组中获取第一个匹配的对象?

javascript - qTip2 渲染位置错误

php - 此交易无效。 Paypal PHP SDK

jquery - 单选按钮可见性