TCPDF breaking my output on PDF - php

I am using open cart. I am generating a PDF file using TCPDF. I load my html from a tpl file, which has form with dynamic data. here is my code
$pdf = new TCPDF()
$pdf->AddPage('P');
$html = $this->render();
$pdf->writeHTML($html);
$pdf->Output();
Its showing me output but its breaking the result.
I have five parts in my form but its just showing me first two why is this so.
Plus my css is not working well.

Related

Unable to export CSS when exporting large HTML to PDF using mPDF

I'm using mPDF to export a large table to a PDF. As I've read online, I need to break my HTML content into chunks and pass them to WriteHTML method one by one.
But looks like my bootstrap CSS is not getting exported when I do this. My table borders are not visible. No paddings...etc.
How can I achieve both these tasks?
This is my code:
$content_chunks = str_split($content, 1000);
$pdf = new Pdf();
$mpdf = $pdf->api; // fetches mpdf api
$mpdf->SetHTMLHeader(static::buildHeader());
$mpdf->SetHTMLFooter('Generated On: ' . date("r").'||{PAGENO}');
foreach($content_chunks as $html)
{
$mpdf->WriteHTML($html);
}
return $mpdf->Output($file_name,'D');
This is what the official docs say about breaking large HTML into chunks. But I can't find any information with related to exporting bootstrap css.

create pdf file of page with dynamic content

I need to create a PDF file of a php page that includes php variables and js generated content.
I tried achieving this with mPDF and the following script:
require_once "libraries/mpdf/mpdf.php";
ob_start(); // start output buffering
include 'appartamento.php';
$content = ob_get_clean(); // get content of the buffer and clean the buffer
$mpdf = new mPDF();
$mpdf->SetDisplayMode('fullpage');
$mpdf->WriteHTML($content);
$mpdf->Output(); // output as inline content
However, the generated pdf does only include very few content of the php page and i don't know what needs to be done to display the whole content in the pdf file.
Any ideas?
To generate the dynamic content, treat your $content variable is any PHP variable and set it initially.
After that, where you are populating the content in your loop, ensure to use the below logic.
$content = $content . "Your additional Content";
In this way, you will append to your variable.
Finally, use the below code to generate the PDF.
$mpdf->WriteHTML($content);
$mpdf->Output();
exit;
You can easily use almost all the HTML tags in your $content. There are only some tags not supported.
That's it!
I have added the step-by-step process to ensure that you generate the PDF successfully with the dynamic data.
$mpdf=new mPDF('win-1252','A4','','',20,15,55,25,10,10); //This is where you set page size and margins. Feel free to use as is.
$mpdf->useOnlyCoreFonts = true; // false is default.
$mpdf->SetProtection(array('print')); //You can find out about these details in mPDF guidelines.
$mpdf->AliasNbPages(['PAGETOTAL']); // PAGETOTAL gives you the value of Total Pages of your generated PDF.
$mpdf->SetTitle($your_title); //You can even set the PDF Title based on your Data.
$mpdf->SetAuthor($author_name); //You can set Author's Name as well
$mpdf->SetWatermarkText($watermark_text); //You can even set Watermark Text
$mpdf->showWatermarkText = false; //True if you want to show watermark
$mpdf->watermark_font = 'DejaVuSansCondensed'; //Can even change Watermark Font
$mpdf->watermarkTextAlpha = 0.05; //Opacity of Watermark Text
$mpdf->SetDisplayMode('fullpage'); //Obvious as mentioned
$content = $content . 'Your ' . $content . ' can be added this way.'; //This can be any HTML.
$mpdf->WriteHTML($content); //You can now compile your content and show in PDF.
$mpdf->Output(); //finally output it.
In addition to this, please note the following as well.
mPDF is divided into three main sections. These are to be in the <body> of your HTML.
<htmlpageheader name="myheader"> - This is repeated on every page as a header. Can be your logo from the page template. Will close </htmlpageheader>.
<htmlpagefooter name="myfooter"> - This will be similar to the header but at the bottom. Will close </htmlpagefooter>.
This is your entire content in <body>.
To display the <htmlpageheader name="myheader"> and <htmlpagefooter name="myfooter">, use the below lines of code.
<sethtmlpageheader name="myheader" value="on" show-this-page="1" />
<sethtmlpagefooter name="myfooter" value="on" />
Follow this logic and then try.
You could use the fpdf library. It allows you to write a pdf from your PHP.
You should definitely check this out. A very helpful post by the way : https://github.com/dompdf/dompdf
And iff you are new to this, you might want to see how certain examples are rendered eventually : https://dompdf.net/examples.php

mpdf Skips CSS when i render the view into HTML?

i am using codeigniter i am working on invoice and i want to print a PDF file of my invoice page here is my controller.
$pdfFilePath ='invoice.pdf';
$data=$this->singleinvoice($invoiceId);
ini_set('memory_limit','32M');
$html = $this->load->view('invoice/invoicetopdf', $data, true);
$this->load->library('pdf');
$pdf = $this->pdf->load();
$pdf->SetFooter($_SERVER['HTTP_HOST'].'|{PAGENO}|'.date(DATE_RFC822));
$pdf->WriteHTML($html);
$pdf->Output($pdfFilePath, 'D');
redirect("invoice");
when i echo $html veriable is show fine but when it output the pdf .it has no css styling i mean it convert the HTML without any of my css Style.
i also tried the following but no luck.
$style=file_get_contents(base_url().'_assets/css/bootstrap.css');
$pdf->WriteHTML($style,1);
$pdf->Output($pdfFilePath, 'D');
Now i want to convert my HTML page to PDF as it is shown to the public with complete styling and markups.
does it possible any suggestion or solution ?
you have to convert your Page Structure from DIV to Traditional Table structure.
arrange your elements contents etc.into table or tables.
then try some basic CSS.
because most of CSS are not supported in mpdf or any other pdf converter.
Click here
to know what(CSS) is supported and what is not in mpdf.

Print webpage as PDF in PHP

I am newbie to php.
I have developed small application in PHP. Now I have few label controls in one webpage inside form. that i want to save in pdf. Is there any tool like itextsharp (In ASp.net), where I can export one panel or form to pdf. (By rendering)
I checked fpdf and other. In that we can print text. My label data is coming from MYSQL.
Any suggestion.
I suggest mpdf. I'ts very simple, you can create your html as string and render it as pdf.
require_once("mpdf/mpdf.php");
$html = "<p>Hello World</p>";
$mpdf = new mPDF('c', 'A4');
$mpdf->WriteHTML($html);
print $mpdf->Output();

Adjust Image if page break occurs in mpdf library

I am generating pdf from html source using mpdf library in php and everything seems working perfect.
Now I have an issue with the images. Suppose before page end I'm inserting an image but image is big so that it doesn't fit at the bottom of first page and goes to second page. Now I have a long white space at the end of first page because image moved to second page.
Now I want is "if next item to insert in pdf is an image then calculate the remaining size of pdf page if it is less than Image size then adjust the image size so that image can be fit in the pdf page instead of moving to next page" how can i do this here?
Please check the issue image :
If any one has other solution please help me to sort out.
Here's My sample code
include_once 'simple_html_dom.php'; //import html dom and mpdf library
include 'PDFScript/MPDF/mpdf.php';
$mpdf = new mPDF('','','','',15,15,30,15,8,8); //create mpdf object
$html = new simple_html_dom(); //create html dom object
$html = file_get_html("htmlsource.html"); //htmlsource.html is a webpage can contain any html data
$mpdf->WriteHTML($html); //write html source to pdf
$mpdf->Output(); //generate pdf
I got a solution from mpdf forum itself. If Anyone also has the same problem enclose every image in your html inside table as table has a autosize feature in mpdf library.
For more information please check here

Categories