我們正在使用FPDF在PDF格式的報告。 我們通過使用$pdf->WriteHTML(utf8_decode($main));
來獲取我們的pdf報告中的文本,現在我們想要在報告中證明文本的正確性,但我們無法做到這一點。如何證明文件在fpdf
請爲此提出解決方案。
謝謝!
我們正在使用FPDF在PDF格式的報告。 我們通過使用$pdf->WriteHTML(utf8_decode($main));
來獲取我們的pdf報告中的文本,現在我們想要在報告中證明文本的正確性,但我們無法做到這一點。如何證明文件在fpdf
請爲此提出解決方案。
謝謝!
使用Tag-based formatting腳本。我不使用類PDF_HTML,這樣只有「髒」的解決方案:
<?php
require('fpdf.php');
class PDF_HTML extends FPDF {
...
elseif($this->ALIGN == 'center')
$this->Cell(0,5,$e,0,1,'C');
elseif($this->ALIGN == 'justify') {
//$this->SetStyle("p","arial","N",7,"0,0,0"); //TODO
$this->WriteTag(180, 11, $e, 0, "J");// TODO parameters
} else
...
}
class PDF_WriteTag extends PDF_HTML {
...
}
ob_start(); // TODO delete after correcting any errors (only for demo)
$pdf = new PDF_WriteTag();
$pdf->AddPage();
$pdf->SetFont('Arial');
$pdf->WriteHTML('You can<br><p align="center">center a line</p>and add a horizontal rule:<br><hr>');
$pdf->WriteHTML('You can<br><p align="justify">Et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque vitae erat. Vivamus porttitor cursus lacus. Pellentesque tellus. Nunc aliquam interdum felis. Nulla imperdiet leo. Mauris hendrerit, sem at mollis pharetra, leo sapien pretium elit, a faucibus sapien dolor vel pede. Vestibulum et enim ut nulla sollicitudin adipiscing. Suspendisse malesuada venenatis mauris. Curabitur ornare mollis velit. Sed vitae metus. Morbi posuere mi id odio. Donec elit sem, tempor at, pharetra eu, sodales sit amet, elitCurabitur urna tellus, aliquam vitae, ultrices eget, vehicula nec, diam. Integer elementum, felis non faucibus euismod, erat massa dictum eros, eu ornare ligula tortor et mauris. Cras molestie.
</p>and add a horizontal rule:<br><hr>');
ob_clean(); //TODO delete after correcting any errors
$pdf->Output();
本教程介紹瞭如何使用WriteHTML
證明。
http://www.fpdf.org/en/script/script41.php
代碼:
<?php
require('fpdf.php');
class PDF_HTML extends FPDF
{
var $B=0;
var $I=0;
var $U=0;
var $HREF='';
var $ALIGN='';
function WriteHTML($html)
{
//HTML parser
$html=str_replace("\n",' ',$html);
$a=preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach($a as $i=>$e)
{
if($i%2==0)
{
//Text
if($this->HREF)
$this->PutLink($this->HREF,$e);
elseif($this->ALIGN=='center')
$this->Cell(0,5,$e,0,1,'C');
else
$this->Write(5,$e);
}
else
{
//Tag
if($e[0]=='/')
$this->CloseTag(strtoupper(substr($e,1)));
else
{
//Extract properties
$a2=explode(' ',$e);
$tag=strtoupper(array_shift($a2));
$prop=array();
foreach($a2 as $v)
{
if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
$prop[strtoupper($a3[1])]=$a3[2];
}
$this->OpenTag($tag,$prop);
}
}
}
}
function OpenTag($tag,$prop)
{
//Opening tag
if($tag=='B' || $tag=='I' || $tag=='U')
$this->SetStyle($tag,true);
if($tag=='A')
$this->HREF=$prop['HREF'];
if($tag=='BR')
$this->Ln(5);
if($tag=='P')
$this->ALIGN=$prop['ALIGN'];
if($tag=='HR')
{
if(!empty($prop['WIDTH']))
$Width = $prop['WIDTH'];
else
$Width = $this->w - $this->lMargin-$this->rMargin;
$this->Ln(2);
$x = $this->GetX();
$y = $this->GetY();
$this->SetLineWidth(0.4);
$this->Line($x,$y,$x+$Width,$y);
$this->SetLineWidth(0.2);
$this->Ln(2);
}
}
function CloseTag($tag)
{
//Closing tag
if($tag=='B' || $tag=='I' || $tag=='U')
$this->SetStyle($tag,false);
if($tag=='A')
$this->HREF='';
if($tag=='P')
$this->ALIGN='';
}
function SetStyle($tag,$enable)
{
//Modify style and select corresponding font
$this->$tag+=($enable ? 1 : -1);
$style='';
foreach(array('B','I','U') as $s)
if($this->$s>0)
$style.=$s;
$this->SetFont('',$style);
}
function PutLink($URL,$txt)
{
//Put a hyperlink
$this->SetTextColor(0,0,255);
$this->SetStyle('U',true);
$this->Write(5,$txt,$URL);
$this->SetStyle('U',false);
$this->SetTextColor(0);
}
}
?>
用法:
<?php
require('WriteHTML.php');
$pdf=new PDF_HTML();
$pdf->AddPage();
$pdf->SetFont('Arial');
$pdf->WriteHTML('You can<br><p align="center">center a line</p>and add a horizontal rule:<br><hr>');
$pdf->Output();
?>
即使您的答案可能是但是一旦鏈接發生變化或網站所有者刪除它,您的答案變得不那麼有用,而是將鏈接中的重要部分複製到答案中,然後參考鏈接 –
@MasivuyeCokile,您是對的。我已經更新了包含代碼的答案。 –
現在看起來不錯。 –
文本對齊正在爲電池(),多節(),write()方法,但不爲writeHTML()工作。請提出一些想法來擴展writeHTML()。 – Harinarayan
例如,您可以在您的課程PDF_HTML中添加2個special-html標籤(用於樣式和對齊區域),並且可以爲區域標籤添加新課程 – user4762971
您能否給我發送合理區域代碼 – Harinarayan