簡體   English   中英

用於將html導出為pdf的工具

[英]Tool for exporting html as pdf

我有一個標記報告的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
}
?>

顯示以下內容:

在此處輸入圖片說明

因此,如果我使用的是fpdf,將以下內容導出為pdf的最佳方法是什么? 我應該在同一個php文件中編寫fpdf函數還是最好編寫一個單獨的php文件來創建並顯示pdf(這意味着我必須將所有相關數據發布到該文件中)...

使用FPDF庫進行php 檢查

這種文件轉換的第一個也是主要的基礎是FPDF庫。 FPDF是一個純PHP類,可以動態生成PDF文件。 讓我們以簡單的Hello world顯示開始PDF的生成。

<?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)。

然后,我們使用AddPage()將頁面添加到了pdf文檔中。 原點位於左上角,默認情況下當前位置位於距邊界1厘米的位置; 可以使用函數SetMargins()更改邊距。

要打印文本,我們首先需要使用SetFont()選擇一種字體。 讓我們選擇Arial粗體16:

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

我們使用Cell()函數輸出文本。 單元格是一個矩形區域,可能帶有邊框,其中包含一些文本。 在當前位置輸出。 我們指定其尺寸,其文本(居中或對齊),是否應繪制邊框以及當前位置在其后移動的位置(向右,下方或下一行的開始)。 要添加框架,我們可以這樣做:

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

最后,關閉文檔,並使用Output()將其發送到瀏覽器。 我們可以通過傳遞所需的文件名將其保存在文件中。

您也可以使用在線工具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;

我發現此軟件非常有用: http : //code.google.com/p/wkhtmltopdf/

的確,您必須從代碼中執行exec(),但它的效果很好,並使用webkit作為后端引擎(還允許javascript和許多其他功能來定制pdf創建),從而節省了大量代碼。

希望它會有所幫助,我們在這里使用它,它的工作原理就像是一種魅力。

編輯:嘗試靜態二進制文件。 解壓並准備開始:)

另一個更簡單的方法是使用HTML2FPDF。 HTML2FPDF是一個PHP類庫,它使用FPDF類庫將HTML文件轉換為PDF文件。 該庫包含三個類,即PDF,HTML2FPDF和FPDF(修改后的FPDF類)。 PDF類擴展了HTML2FPDF類,該類擴展了FPDF類。

現在讓我們看看如何使用HTML2FPDF庫將示例html頁面轉換為PDF文件。 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類的html2fpdf.php文件,並使用構造函數HTML2FPDF()創建一個對象。 然后使用功能AddPage()將新頁面添加到pdf文檔中。 使用文件功能從sample.html文件讀取html內容。 然后,使用WriteHTML()函數將html內容寫入pdf格式。 要查看html文件,請單擊此處,並查看生成的pdf,請單擊此處。 上面的示例代碼以及示例html文件和圖像以及html2fpdf類庫可在此處下載。

HTML2FPDF類庫將與XHTML 1.0一起使用。 同樣,該類不支持HTML可用的所有功能。 要了解支持的HTML標記和其他功能,請參閱http://html2fpdf.sourceforge.net

我建議您使用它,因為它更容易和友好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM