it-swarm.com.de

FPDF - Inline-Fetttext

Ich versuche, ein PDF aus PHP zu erstellen, und aus rechtlichen Gründen müssen wir einen Teil unseres Disclaimer BOLD machen, und der Disclaimer muss umrissen werden.

Mein aktueller Code verwendet:

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

Derzeit verwende ich WriteHTML für andere Teile des Dokuments. Ich könnte das anstelle von MultiCell verwenden, aber wie erstelle ich dann den Rand?

Ich habe also 2 Möglichkeiten ..

native FPDF-Funktionen

PROS: Geben Sie eine Option für eine Grenze an

CONS: Keine einfache Möglichkeit, Inline-Text fett darzustellen

WriteHTML-Erweiterungsklasse

PROS: Lässt mich leicht fetten Text inline hinzufügen

CONS: Nicht sicher, wie die Grenze erstellt wird

Vorschläge?

9

Sie können einen Teil der Erweiterung neu schreiben, aber es ist möglicherweise einfacher, die Erweiterung writeHTML zu verwenden und dann eine Zelle (leerer Text) mit einem Rahmen über der mit writeHTML erstellten Zelle zu zeichnen. Wenn Sie Ihre Zellen richtig einstellen, sollte es funktionieren.

Vergessen Sie nicht, SetY then SetX zu verwenden, um Ihre Zellen zu positionieren.

Beispiel:

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');
 } 
7
Venom

Verwenden Sie Write () und Rect () .

Beispiel:

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

Sie müssen mit Breite und Höhe der Rect () - Parameter herumspielen. In diesem Fall stelle ich width = 2 und height auf 0,1 User Units ein.

4
Timothy Law

Ich finde andere Lösung.

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

kopieren und Einfügen des Fragmentcodes write_tag in die Datei fpdf.php, rufen Sie die Funktion write_tag auf, während PDF erstellt wurde. Mit diesem Format kann ich den Text im PDF-Format formatieren.

So habe ich es gelöst:

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

Erstellen Sie im Wesentlichen eine Zelle, ändern Sie die Schriftart und dann eine weitere Zelle mit der Breite des Textes, den Sie fett formatieren möchten, und so weiter.

Es gibt offenbar bessere Werkzeuge, um PDFs zu erstellen, die HTML-/Blade-Vorlagen und dergleichen verwenden. Daher sollten Sie dies in Betracht ziehen. 

1
mkrell

Alternativ unterstützt TCPDF das Schreiben von Cell, das HTML enthält, über writeHTMLCell () , Syntax hier .

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

TCPDF nützlicher als FPDF

In TCPDF

Wenn Sie den Parameter $ ishtml in multicell auf true setzen, können Sie die HTML-Eigenschaften an Ihre Texte anpassen.

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

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

Standardfunktion;

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

Funktion, die Sie ausführen müssen

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

Ich hoffe, es hilft..

0