Tera air FPDF dan FPDI diulang pada sudut dalam arah X-Y.
P粉198814372
2023-08-06 20:11:40
<p>Menggunakan perpustakaan setasign/FPDF dan setasign/FPDI, saya perlu menambah tera air dan tindanan pengaki tersuai pada mana-mana dokumen PDF (setiap halaman perlu ditanda air). Fail PDF asal disimpan pada pelayan, dan proses mesti berlaku apabila fail diminta (kerana ia mengandungi tarikh dan masa permintaan). <br /><br />Saya berjaya menambah pengaki yang diperlukan termasuk tarikh dan masa yang diminta, terima kasih kepada kod berikut. Kod ini juga mencetak satu kejadian tera air secara menyerong di seluruh halaman, tetapi saya benar-benar ingin mempunyai tingkah laku lain: mengulang rentetan secara menyerong, seperti yang ditunjukkan pada imej ini (cth. Rentetan saya dijana secara dinamik). Tidak kira sama ada rentetan itu bermula atau berakhir "di luar" halaman, asalkan rentetan itu berulang pada berbilang baris, dan baris tersebut mesti dijarakkan pada jarak yang sama. <br /><br />Adakah anda mempunyai sebarang petunjuk di mana untuk bermula? <br /><br />Kod berfungsi setakat hari ini: </p><p><br /></p>
<pre class="brush:php;toolbar:false;"><?php
gunakan setasignFpdiFpdi;
require_once('vendor/autoload.php');
kelas Watermarked_PDF memanjangkan Fpdi
{
Fungsi Footer()
{
$this->SetY(-10);
$this->SetFont('Arial', false, 8);
$this->SetTextColor(28, 28, 28);
$this->Cell(0, 15, 'Fail diminta pada : ' . date('r'), 0, 0, 'C');
}
}
fungsi addWatermark($x, $y, $watermarkText, $angle, $pdf)
{
$angle = $angle * M_PI / 180;
$c = cos($sudut);
$s = sin($sudut);
$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->Teks($x, $y, $watermarkText);
$pdf->_out('Q');
}
$pdf = Watermarked_PDF baharu();
$file_Path = 'dokumen/';
$file_Name = '13825_2023-07-04';
$pages_count = $pdf->setSourceFile($file_Path . $file_Name . '.pdf');
untuk ($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 #' .
addWatermark(120, 220, $watermarkText, 45, $pdf);
$pdf->SetXY(25, 25);
}
$pdf->Output();</pre>
<p><em>Kod tera air dari sini: https://phppot.com/php/php-watermark-pdf/ dan disesuaikan.<br /><br />Fail komposer.json asas untuk ujian: <br /></em></p><p><br />< ;
<pre class="brush:php;toolbar:false;">{
"memerlukan": {
"setasign/fpdf": "1.8.*",
"setasign/fpdi": "^2.3"
}
}</pre>
<p>Terima kasih</p>
Saya sebenarnya telah menemui penyelesaian, tetapi ia agak hodoh :
Walaupun gelung yang dikemas kini ini tidak optimum, ia menyelesaikan tugas. Saya akan terus bekerja dengan cara ini buat masa ini dan menyesuaikannya mengikut keperluan saya.