José Miguel José Miguel - 2 years ago 931
jQuery Question

Can't download a PDF generated with TCPDF using AJAX

I want to get a PDF of an HTML file, I am using TCPDF to generate the PDF and AJAX to send the information. Right now, I am only trying to get a PDF of one SVG on the page, when I get this done I will do the rest.

The problem is that TCPDF generates the PDF but instead of downloading it, it passes it to the javascript cosole. When I don't use AJAX it works perfect.

Here is the AJAX code:

// 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 };
type: 'POST',
url: 'generarPDF.php',
data : parameters,
success: function(result) {

And here is the PHP code:

// Include the main TCPDF library (search for installation path).
// create new PDF document

// set default header data

// 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

// set margins

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor

// ---------------------------------------------------------

// set font
$pdf->SetFont('helvetica', '', 10);

// add a page

// NOTE: Uncomment the following line to rasterize SVG image using the ImageMagick library.
$svg2 = $_POST['datos'];

$pdf->ImageSVG($file='@'.$svg2, $x=15, $y=30, $w='', $h='', $link='', $align='', $palign='', $border=1, $fitonpage=false);

// ---------------------------------------------------------

//Close and output PDF document
$pdf->Output('nuevo.pdf', 'D');

Thanks in advance for the help.

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

$destination can take one of the following values:

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)

Check the documentation for more information.

The error Unable to create output file means that TCPDF can't write your document to your folder. Provide a valid path in $name.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download