FPDF-встроенный полужирный текст

Я пытаюсь создать PDF из PHP, и по юридической причине нам нужно сделать часть нашего отказа от ответственности жирным шрифтом, и отказ от ответственности должен быть изложен.

мой текущий код использует:

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, но тогда как создать границу?

поэтому у меня есть 2 варианта..

собственные функции FPDF

плюсы: дайте опция для границы

минусы: нет простого способа сделать встроенный текст полужирным

класс расширения WriteHTML

PROS: позволяет мне легко добавлять полужирный текст inline

минусы: не уверен, как создать границу

предложения?

3 ответов


вы можете переписать часть расширения, но вам может быть проще использовать расширение 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');
 } 

использовать 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 Единицы Пользователей.


вот как я решил это:

$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');

по сути, сделайте одну ячейку, измените шрифт, затем другую ячейку с шириной текста, который вы хотите выделить жирным шрифтом, и так далее.

там, кажется, есть лучшие инструменты для создания PDF-файлов, которые используют шаблоны HTML / Blade и такие, хотя, поэтому вы можете рассмотреть возможность использования этого.