FPDF- und FPDI-Wasserzeichen werden in einem Winkel in X-Y-Richtung wiederholt.
<p>Mit den Bibliotheken setasign/FPDF und setasign/FPDI muss ich jedem PDF-Dokument ein Wasserzeichen und eine benutzerdefinierte Fußzeilenüberlagerung hinzufügen (jede Seite muss mit einem Wasserzeichen versehen sein). Die Original-PDF-Datei wird auf dem Server gespeichert und der Vorgang muss erfolgen, wenn die Datei angefordert wird (da sie das Datum und die Uhrzeit der Anforderung enthält). <br /><br />Dank des folgenden Codes konnte ich die erforderliche Fußzeile einschließlich des gewünschten Datums und der gewünschten Uhrzeit erfolgreich hinzufügen. Der Code druckt auch ein einzelnes Vorkommen des Wasserzeichens diagonal über die Seite, aber ich hätte wirklich gerne ein anderes Verhalten: die diagonale Wiederholung der Zeichenfolge, wie in diesem Bild gezeigt (z. B. werden meine Zeichenfolgen dynamisch generiert). Es spielt keine Rolle, ob die Zeichenfolge „außerhalb“ der Seite beginnt oder endet, solange sie sich in mehreren Zeilen wiederholt und diese Zeilen den gleichen Abstand haben müssen. <br /><br />Haben Sie Hinweise, wo Sie anfangen sollen? <br /><br />Arbeitscode ab heute: </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><?php
setasignFpdiFpdi verwenden;
require_once('vendor/autoload.php');
Die Klasse Watermarked_PDF erweitert Fpdi
{
Funktion Footer()
{
$this->SetY(-10);
$this->SetFont('Arial', false, 8);
$this->SetTextColor(28, 28, 28);
$this->Cell(0, 15, 'Datei angefordert am: ' . date('r'), 0, 0, 'C');
}
}
Funktion addWatermark($x, $y, $watermarkText, $angle, $pdf)
{
$angle = $angle * M_PI / 180;
$c = cos($angle);
$s = sin($angle);
$cx = $x * 1;
$cy = (300 - $y) * 1;
$pdf->_out(sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm', $c, $s, - $s, $c, $cx, $cy, -$cx, -$cy));
$pdf->Text($x, $y, $watermarkText);
$pdf->_out('Q');
}
$pdf = new Watermarked_PDF();
$file_Path = 'Dokumente/';
$file_Name = '13825_2023-07-04';
$pages_count = $pdf->setSourceFile($file_Path . $file_Name . '.pdf');
for ($i = 1; $i <= $pages_count; $i++) {
$pdf->AddPage();
$tplIdx = $pdf->importPage($i);
$pdf->useTemplate($tplIdx, 0, 0);
$pdf->SetFont('Arial', 'B', 15);
$pdf->SetTextColor(175, 175, 175);
$watermarkText = 'file #' . $file_Name . ' - Eigenschaft des Unternehmens';
addWatermark(120, 220, $watermarkText, 45, $pdf);
$pdf->SetXY(25, 25);
}
$pdf->Output();</pre>
<p><em>Wasserzeichencode von hier: https://phppot.com/php/php-watermark-pdf/ und angepasst.<br /><br />Basis-Composer.json-Datei zum Testen: <br /></em></p><p><br />< /p> ;
<pre class="brush:php;toolbar:false;">{
"erfordern": {
"setasign/fpdf": "1.8.*",
„setasign/fpdi“: „^2.3“
}
}</pre>
<p>Vielen Dank</p>