Tera air FPDF dan FPDI diulang pada sudut dalam arah X-Y.
P粉198814372
P粉198814372 2023-08-06 20:11:40
0
1
472
<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>
P粉198814372
P粉198814372

membalas semua(1)
P粉731861241

Saya sebenarnya telah menemui penyelesaian, tetapi ia agak hodoh :

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 . ' - propery of company';
    addWatermark(0, 0, $watermarkText, 45, $pdf);
    addWatermark(0, 50, $watermarkText, 45, $pdf);
    addWatermark(0, 100, $watermarkText, 45, $pdf);
    addWatermark(0, 150, $watermarkText, 45, $pdf);
    addWatermark(0, 200, $watermarkText, 45, $pdf);
    addWatermark(0, 250, $watermarkText, 45, $pdf);
    addWatermark(0, 300, $watermarkText, 45, $pdf);
    addWatermark(0, 350, $watermarkText, 45, $pdf);
    addWatermark(0, 400, $watermarkText, 45, $pdf);
    addWatermark(0, 450, $watermarkText, 45, $pdf);
    $pdf->SetXY(25, 25);
}

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan