PDF from PHPを作成しようとしていますが、法的な理由により、免責事項の一部を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の代わりにWriteHTMLを簡単に使用できますが、境界線を作成するにはどうすればよいですか?
したがって、2つのオプションがあります。
ネイティブFPDF関数
長所:境界線のオプションを与える
短所:インラインテキストを太字にする簡単な方法はありません
WriteHTML拡張クラス
長所:太字のテキストを簡単にインラインで追加できます
短所:境界線の作成方法がわからない
提案?
拡張機能の一部を書き直すこともできますが、拡張機能writeHTMLを使用してから、writeHTMLで作成したセルの上に境界線のあるセル(空のテキスト)を描画する方が簡単な場合があります。セルを適切に調整することで、機能するはずです。
SetY then 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');
}
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 ser Units に設定します。
私は他の解決策を見つけます。
http://fpdf.de/downloads/add-ons/tag-based-formatting.html
ファイルfpdf.php内にフラグメントコードwrite_tagをコピーして貼り付け、pdfの作成中に関数write_tagを呼び出し、これをPDFのテキストでフォーマットできます。
これが私がそれを解決した方法です:
$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');
基本的に、1つのセルを作成し、フォントを変更してから、太字にしたいテキストの幅を持つ別のセルを変更します。
ただし、HTML/Bladeテンプレートなどを使用するPDFを作成するためのより優れたツールがあるように思われるので、それを使用することを検討することをお勧めします。
または、 [〜#〜] tcpdf [〜#〜] は、 writeHTMLCell() 、構文 here を介してHTMLを含むCellの書き込みをサポートします。
$pdf->writeHTMLCell($width, $height, $x, $y, "<b>bold</b> and <u>underlined</u> text.");
FPDFよりも便利なTCPDF
TCPDFで
マルチセルで$ ishtmlパラメータをtrueに設定すると、htmlプロパティをテキストに適合させることができます。
$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)
あなたがする必要がある機能
MultiCell($w, $h, $txt, $border=0, $align='J', $fill=0, $ln=1, $x='', $y='', $reseth=true, $stretch=0, $ishtml=true, $autopadding=true, $maxh=0)
お役に立てば幸いです。