Инструмент для экспорта HTML в формате PDF - PullRequest
1 голос
/ 18 августа 2011

У меня есть HTML-документ, который размечает отчет.У меня есть кнопка на этой странице "Экспорт в формате PDF".Однако я не уверен, как экспортировать HTML в PDF. Существуют ли какие-либо инструменты, которые кто-либо рекомендует для такой задачи ..

РЕДАКТИРОВАТЬ: более подробно:

У меня естьследующий 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
}
?>

Это отображает следующее:

enter image description here

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

Ответы [ 4 ]

5 голосов
/ 18 августа 2011

Использовать библиотеку 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 (). Мы могли бы сохранить его в файле, передав желаемое имя файла.

1 голос
/ 12 октября 2012

Вы также можете использовать онлайн-инструмент 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;
1 голос
/ 18 августа 2011

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

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

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

РЕДАКТИРОВАТЬ: попробуйте статические двоичные файлы. и не готов к работе :) 1010 *

0 голосов
/ 18 августа 2011

Еще один гораздо более простой способ - с 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...