cari

Rumah  >  Soal Jawab  >  teks badan

Tera air FPDF dan FPDI diulang pada sudut dalam arah X-Y.

<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粉198814372P粉198814372477 hari yang lalu476

membalas semua(1)saya akan balas

  • P粉731861241

    P粉7318612412023-08-07 17:57:25

    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.

    balas
    0
  • Batalbalas