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