我正在尝试使用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:让我轻松添加内联粗体文字
缺点:不确定如何创建边框
建议?
答案 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)
示例:
$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)
希望对您有帮助。