FPDF - 内联粗体文本

时间:2014-03-27 19:37:05

标签: php html border fpdf

我正在尝试使用PHP创建PDF,出于法律原因,我们需要将免责声明作为BOLD的一部分,并且需要概述免责声明。

我目前的代码使用:

if(isset($_POST['optout']) && $_POST['optout'] == "yes"){
    $pdf->Ln(5);
    $pdf->SetFont('Arial','I',12);
    $pdf->SetTextColor(128);
    $pdf->MultiCell(0,4,'This is my disclaimer. THESE WORDS NEED TO BE BOLD. These words do not need to be bold.',1,'C');
}

我目前正在将WriteHTML用于文档的其他部分,我可以轻松地使用它而不是MultiCell,但是如何创建边框?

所以我有两个选择..

原生FPDF功能

PROS:为边框提供选项

缺点:没有简单的方法可以使内嵌文本变为粗体

WriteHTML扩展类

PROS:让我轻松添加内联粗体文字

缺点:不确定如何创建边框

建议?

6 个答案:

答案 0 :(得分:7)

您可以重写扩展的一部分,但是您可能更容易使用扩展writeHTML,然后在使用writeHTML创建的单元格上绘制带边框的单元格(空文本)。通过适当调整细胞,它应该可以工作。

不要忘记使用SetY 然后 SetX来定位您的细胞。

示例:

if(isset($_POST['optout']) && $_POST['optout'] == "yes"){
   $pdf->Ln(5);
   $pdf->SetFont('Arial','I',12);
   $pdf->SetTextColor(128);

   //Your text cell
   $pdf->SetY($pos_Y);
   $pdf->SetX($pos_X);
   $pdf->writeHTML('This is my disclaimer. <b>THESE WORDS NEED TO BE BOLD.</b> These words do not need to be bold.');

   //Your bordered cell
   $pdf->SetY($pos_Y);
   $pdf->SetX($pos_X);
   $pdf->Cell($width, $height, '', 1, 0, 'C');
 } 

答案 1 :(得分:4)

使用Write() & Rect()

示例:

$pdf->Rect($pdf->GetX(),$pdf->GetY(),2,0.1);
$pdf->SetFont('Arial','',8);
$pdf->Write(0.1,"this is not bold, but this ");
$pdf->SetFont('Arial','B',8);
$pdf->Write(0.1,"is bold.");
$pdf->SetFont('Arial','',8);
$pdf->Ln();

你需要玩宽度和宽度Rect()参数的高度。在这种情况下,我将width = 2和height设置为0.1 User Units

答案 2 :(得分:1)

以下是我如何解决它:

$pdf->SetFont('Arial','',10);
$cell = 'This is my disclaimer.';
$pdf->Cell($pdf->GetStringWidth($cell),3,$cell, 0, 'L');
$pdf->SetFont('Arial','B',10);
$boldCell = "THESE WORDS NEED TO BE BOLD.";
$pdf->Cell($pdf->GetStringWidth($boldCell),3,$boldCell, 0, 'L');
$pdf->SetFont('Arial','',10);
$cell = 'These words do not need to be bold.';
$pdf->Cell($pdf->GetStringWidth($cell),3,$cell, 0, 'L');

基本上,制作一个单元格,更改字体,然后使用要加粗的文本宽度的另一个单元格,依此类推。

然而,似乎有更好的工具来制作使用HTML /刀片模板等的PDF,因此您可能需要考虑使用它。

答案 3 :(得分:1)

我找到了其他解决方案。

http://fpdf.de/downloads/add-ons/tag-based-formatting.html

将片段代码write_tag复制并粘贴到文件fpdf.php中,在创建pdf时调用函数write_tag,这可以使pdf文本格式。

答案 4 :(得分:0)

或者TCPDF支持通过writeHTMLCell()和语法here编写包含HTML的Cell。

$pdf->writeHTMLCell($width, $height, $x, $y, "<b>bold</b> and <u>underlined</u> text.");

答案 5 :(得分:0)

TCPDF比FPDF更有用

在TCPDF中

如果在多单元格中将 $ ishtml 参数设置为 true ,则可以使html属性适合您的文本。

cy.get('input')
  .invoke('val')
  .then(value => assert.isTrue(!!value));

默认功能;

$text = "It <b>must</b> be like that";

$this->MultiCell($w, $h, $text, $border, $align, $fill, $ln, $x, $y, $reseth, $stretch, true, $autopadding, $maxh);

您需要执行的功能

MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=false, $autopadding=true, $maxh=0)

希望对您有帮助。