Инструмент для экспорта html в формате pdf

У меня есть html-документ, который помещает отчет. У меня есть кнопка на этой странице «Экспорт в формате pdf». Однако я не уверен, как экспортировать html в pdf. Есть ли там какие-либо инструменты, которые кто-либо рекомендует для такой задачи.

EDIT: Более подробно:

У меня есть следующий php:

<?php function connect() { $dbh = mysql_connect ("localhost", "user", "password") or die ('I cannot connect to the database because: ' . mysql_error()); mysql_select_db("PDS", $dbh); return $dbh; } session_start(); if(isset($_SESSION['username'])){ if(isset($_POST['entryId'])){ //do something $dbh = connect(); $ide = $_POST['entryId']; $usertab = $_POST['usertable']; $answertable = $usertab . "Answers"; $entrytable = $usertab . "Entries"; $query = mysql_query("SELECT e.date, q.questionNumber, q.question, q.sectionId, a.answer FROM $answertable a, Questions q, $entrytable e WHERE a.entryId = '$ide' AND a.questionId = q.questionId AND e.entryId = '$ide' ORDER BY q.questionNumber ASC;") or die("Error: " . mysql_error()); if($query){ //set variables $sectionOne = array(); $sectionTwo = array(); $sectionThree = array(); $sectionFour = array(); $sectionFive = array(); while($row=mysql_fetch_assoc($query)){ $date = $row['date']; $section = $row['sectionId']; switch($section){ case '1': $sectionOne[] = $row; break; case '2': $sectionTwo[] = $row; break; case '3': $sectionThree[] = $row; break; case '4': $sectionFour[] = $row; break; case '5': $sectionFive[] = $row; break; default: break; } } }else{ //error - sql failed } } ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <script src = "jQuery.js"></script> <script> $(document).ready(function(){ }); </script> <title>Personal Diary System - Entry Report - <?php echo($date); ?></title> </head> <body> <h1>Entry Report - <?php echo($date); ?></h1> <div id = "buttons"> <a href = "http://dev.speechlink.co.uk">Export as PDF</a> </div> <h3>Biological Information</h3> <?php $i = 0; foreach($sectionOne as &$value){ if($i == 1 || $i == 3){ $image = "assets/urine".$i.".png"; echo("<br/>"); echo($value['question']." <br/> "."<img src = \"$image\"/>"); echo("<br/>"); }else{ echo($value['question'].' : '.$value['answer']); } echo("<br/>"); $i++; } ?> <h3>Fatigue and Recovery</h3> <?php foreach($sectionTwo as &$value){ echo($value['question'].' : '.$value['answer']); echo("<br/>"); } ?> <h3>Illness and Injury</h3> <?php foreach($sectionThree as &$value){ echo($value['question'].' : '.$value['answer']); echo("<br/>"); } ?> <h3>Training Sessions</h3> <?php foreach($sectionFour as &$value){ echo($value['question'].' : '.$value['answer']); echo("<br/>"); } ?> <h3>General Feedback</h3> <?php if(count($sectionFive)>0){ foreach($sectionFive as &$value){ echo($value['question'].' : '.$value['answer']); } }else{ echo("User didn't leave any feedback"); } echo("<br/>"); ?> </body> </html> <?php } ?> 

Появится следующее:

введите описание изображения здесь

Так что, если я использую fpdf, какой лучший способ экспортировать следующее в виде pdf? Должен ли я писать функцию fpdf в том же php-файле или лучше написать отдельный файл php, который создает и отображает pdf (что означает, что мне нужно будет опубликовать все соответствующие данные в этот файл) …

Используйте библиотеку FPDF для проверки php здесь

Первой и основной базой для этого преобразования файлов является библиотека FPDF. FPDF – это чистый класс PHP для генерации PDF-файлов на лету. Давайте начнем создание PDF с помощью простого дисплея Hello World.

 <?php require('fpdf.php'); $pdf=new FPDF(); $pdf->AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'Hello World!'); $pdf->Output(); ?> 

Чтобы сгенерировать PDF-файл, сначала нужно включить библиотечный файл fpdf.php. Затем нам нужно создать объект FPDF, используя конструктор по умолчанию FPDF (). Этот конструктор можно передать тремя значениями, а именно ориентацией страницы (портретной или альбомной), единиц измерения и размера страницы (A4, A5 и т. Д.). По умолчанию страницы находятся в формате A4, а единица измерения – миллиметровая. Это можно было бы явно указать:

 $pdf=new FPDF('P','mm','A4'); 

Можно использовать ландшафт (L), другие форматы страниц (например, Letter и Legal) и единицы измерения (pt, cm, in).

Затем мы добавили страницу в наш pdf-документ с помощью AddPage (). Происхождение находится в верхнем левом углу, и текущая позиция по умолчанию помещается на расстоянии 1 см от границ; поля могут быть изменены с помощью функции SetMargins ().

Чтобы напечатать текст, нам нужно сначала выбрать шрифт с помощью SetFont (). Выберем Arial жирным шрифтом 16:

 $pdf->SetFont('Arial','B',16); 

Мы используем функцию Cell () для вывода текста. Ячейка представляет собой прямоугольную область, возможно обрамленную, которая содержит некоторый текст. Он выводится в текущем положении. Мы указываем его размеры, текст (центрированный или выровненный), если границы должны быть нарисованы и где текущая позиция перемещается после нее (справа, внизу или в начале следующей строки). Чтобы добавить фрейм, мы сделаем следующее:

 $pdf->Cell(40,10,'Hello World !',1); 

Наконец, документ закрыт и отправлен в браузер с помощью Output (). Мы могли бы сохранить его в файле, передав нужное имя файла.

Я нашел это программное обеспечение весьма полезным: http://code.google.com/p/wkhtmltopdf/

Это правда, что вам придется выполнить exec () его из вашего кода, но он работает очень хорошо и использует webkit в качестве бэкэнд-движка (позволяя javascript также и многие другие функции для настройки создания PDF-файлов), экономя много кода ,

Надеюсь, это поможет, мы используем его здесь, и это работает как шарм.

EDIT: попробуйте статические двоичные файлы. разворот и готов к работе 🙂

Вы также можете использовать онлайн-инструмент Pdfcrowd API

Его легко интегрировать и обеспечивает много свободного выпуска. Вы можете проверить Официальный сайт PDFCrowd

  require 'pdfcrowd.php'; // create an API client instance $client = new Pdfcrowd("username", "apikey"); // convert a web page and store the generated PDF into a variable $pdf = $client->convertURI('http://www.google.com/'); //You can also convert raw HTML code, just use the convertHtml() method instead of convertURI() $pdf = $client->convertHtml("<body>My HTML Layout</body>"); //Or use convertFile() to convert a local HTML file $pdf = $client->convertFile("/path/to/MyLayout.html"); // set HTTP response headers header("Content-Type: application/pdf"); header("Cache-Control: no-cache"); header("Accept-Ranges: none"); header("Content-Disposition: attachment; filename=\"google_com.pdf\""); // send the generated PDF echo $pdf; 

Еще один гораздо более простой способ – с HTML2FPDF. HTML2FPDF – это библиотека классов PHP, которая использует библиотеку классов FPDF для преобразования файлов HTML в файлы PDF. Эта библиотека состоит из трех классов: PDF, HTML2FPDF и FPDF (модифицированный класс FPDF). Класс PDF расширяет класс HTML2FPDF, который расширяет класс FPDF.

Теперь посмотрим, как преобразовать образец html-страницы в файл PDF, используя библиотеку HTML2FPDF. На странице html содержится таблица, в которой перечислены несколько стран с соответствующими национальными флагами. Ниже приведен код преобразования.

 <? require('html2fpdf.php'); $pdf=new HTML2FPDF(); $pdf->AddPage(); $fp = fopen("sample.html","r"); $strContent = fread($fp, filesize("sample.html")); fclose($fp); $pdf->WriteHTML($strContent); $pdf->Output("sample.pdf"); echo "PDF file is generated successfully!"; ?> 

Во-первых, нам нужно включить файл html2fpdf.php, который содержит класс HTML2FPDF, и объект создается с помощью конструктора HTML2FPDF (). Затем в PDF-документ добавляется новая страница с помощью функции AddPage (). Содержимое html считывается из файла sample.html с использованием функций файла. Затем содержимое html записывается в формат pdf с использованием функции WriteHTML (). Чтобы просмотреть файл html, нажмите здесь и, чтобы просмотреть сгенерированный PDF-файл, нажмите здесь. Вышеприведенный пример кода с образцом html-файла и изображений и библиотеки классов html2fpdf можно загрузить здесь.

Библиотека классов HTML2FPDF будет лучше работать с XHTML 1.0. Также класс не поддерживает все функции, доступные в HTML. Чтобы узнать поддерживаемые теги HTML и другие функции, обратитесь к http://html2fpdf.sourceforge.net .

Я рекомендую вам использовать это, потому что это намного проще и дружелюбно.