Rumah >pembangunan bahagian belakang >tutorial php >PHP Master | Tukar HTML ke PDF dengan DOMPDF

PHP Master | Tukar HTML ke PDF dengan DOMPDF

Lisa Kudrow
Lisa Kudrowasal
2025-02-23 10:36:11782semak imbas

PHP Master | Tukar HTML ke PDF dengan DOMPDF PDF adalah format standard yang asalnya dicipta oleh Adobe untuk mewakili teks dan imej dalam dokumen lapisan tetap. Ia tidak biasa untuk aplikasi web untuk menyokong data memuat turun, seperti invois atau laporan, dalam format PDF, jadi dalam artikel ini kita akan melalui bagaimana kita boleh dengan mudah menghasilkan dokumen PDF menggunakan PHP. DOMPDF adalah perpustakaan yang hebat, yang mampu menghasilkan PDF dari gaya HTML dan gaya CSS (kebanyakannya mematuhi CSS 2.1 dan mempunyai sokongan untuk beberapa sifat CSS3). Kita boleh menentukan bagaimana kandungan kita harus melihat menggunakan teknologi yang biasa ini, dan kemudian dengan mudah menukarnya ke dalam dokumen tetap. Perpustakaan ini mempunyai banyak ciri berguna dan menarik juga.

Takeaways Key

  • DompDF adalah perpustakaan PHP yang boleh menukar gaya markup dan CSS HTML ke dalam dokumen PDF, menjadikannya berguna untuk aplikasi web yang perlu menyokong memuat turun data dalam format PDF.
  • Untuk menggunakan dompdf, ia perlu dipasang melalui github atau komposer, dan ia memerlukan php> = 5.0 dengan sambungan mbstring dan dom didayakan. Markup HTML boleh dimuatkan sebagai rentetan atau dari fail atau url, dan kemudian dimasukkan ke dalam pdf.
  • DompDF menyediakan pelbagai pilihan konfigurasi untuk menyesuaikan PDF kepada keperluan khusus, seperti saiz kertas, orientasi halaman, dan pengekodan aksara. Ia juga membolehkan penggunaan lanjutan, seperti menjimatkan PDF yang dihasilkan ke cakera, atau menambah tajuk atau footer.
  • Walaupun DOMPDF adalah alat yang berkuasa, ia mempunyai beberapa batasan, seperti tidak bertoleransi terhadap HTML yang kurang dibentuk dan hanya mempunyai sokongan terhad untuk CSS3. Adalah disyorkan untuk mengkaji semula dokumentasi dan kod sumber perpustakaan untuk pemahaman penuh tentang keupayaan dan isu -isu yang berpotensi.

Bermula

DOMPDF boleh didapati di GitHub dan boleh dipasang menggunakan komposer. Mendapatkan pemasangan berasaskan komposer dan berjalan dengan betul diakui masih agak rumit, jadi saya cadangkan hanya menggunakan Git untuk memasang DompDF. Perpustakaan memerlukan php> = 5.0 dengan sambungan MBSTRING dan DOM diaktifkan. Ia juga memerlukan beberapa fon, yang biasanya terdapat pada kebanyakan mesin. Navigasi ke mana sahaja anda mahu meletakkan perpustakaan dan laksanakan:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Dengan DOMPDF yang dimuat turun, mari tulis contoh ringkas yang akan menghasilkan PDF yang mudah.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Untuk menggunakan perpustakaan dalam projek, kami mula -mula menarik DOMPDF_CONFIG.INC.PHP yang mengandungi kebanyakan konfigurasi DOMPDF. Ia juga memuatkan autoloader dan fail konfigurasi tersuai di mana kita boleh mengatasi parameter konfigurasi lalai. Markup HTML diberikan sebagai rentetan kepada kaedah LOAD_HTML (). Sebagai alternatif, kita boleh memuatkan markup dari fail atau URL menggunakan kaedah LOAD_HTML_FILE (). Ia menerima nama fail atau URL laman web sebagai hujahnya. Kaedah render () menjadikan HTML ke PDF dan kami bersedia untuk membuang fail PDF. Stream () menghantar PDF yang dihasilkan sebagai lampiran kepada penyemak imbas. Kaedah aliran () mempunyai parameter kedua pilihan, pelbagai pilihan:
  • menerima ranges-boolean, hantar header "menerima" (palsu secara lalai).
  • Lampiran-Boolean, hantar tajuk "Kandungan: Lampiran" memaksa penyemak imbas untuk memaparkan prompt simpan (benar secara lalai).
  • compress - boolean, dayakan pemampatan kandungan (benar secara lalai).
Kami telah menjana PDF yang sangat mudah di sini, tetapi itu tidak begitu praktikal. Pada hakikatnya kita sering mempunyai keperluan mengenai saiz kertas, orientasi halaman, pengekodan aksara, dan lain-lain. Terdapat bilangan pilihan konfigurasi yang boleh kita tetapkan untuk menjadikan DOMPDF lebih sesuai untuk keperluan dunia sebenar kita. Semuanya disenaraikan dan dijelaskan dalam dompdf_config.inc.php yang menetapkan mereka pada nilai lalai mereka. Anda boleh menukar nilai ini dengan mengemas kini fail konfigurasi tersuai DOMPDF_CONFIG.CUSTOM.INC.PHP. Beberapa tetapan penting adalah:
  • dompdf_default_paper_size - Menetapkan saiz kertas lalai untuk dokumen PDF. Saiz kertas yang disokong boleh didapati di termasuk/cpdf_adapter.cls.php (nilai lalai adalah "huruf").
  • dompdf_temp_dir - Menentukan direktori sementara yang digunakan oleh DompDF. Pastikan lokasi ini boleh ditulis oleh akaun pelayan web.
  • dompdf_unicode_enabled - menetapkan sama ada pdf menggunakan fon unicode (lalai adalah benar).
  • dompdf_enable_remote - membolehkan kemasukan imej atau gaya CSS dari tapak terpencil (lalai adalah palsu).
  • debug_layout - sama ada untuk membuat kotak di sekitar setiap blok HTML dalam fail pdf yang berguna untuk menyahpepijat susun atur (lalai adalah palsu).

Penggunaan lanjutan

Sekarang mari kita bercakap tentang beberapa kegunaan dOMPDF lanjutan. Mungkin kita mahu menyimpan dokumen PDF yang dihasilkan ke cakera dan bukannya menghantarnya ke pelayar. Begini:
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Daripada memanggil aliran () seperti dalam contoh sebelumnya, kami menggunakan output () yang mengembalikan PDF sebagai rentetan. Ia juga menerima pelbagai pilihan pilihan, tetapi satu -satunya pilihan yang tersedia adalah memampatkan (lalai adalah benar). DOMPDF juga membolehkan kami menambah header atau footer ke PDF yang dihasilkan dengan membenamkan skrip PHP dalam HTML yang menjadikannya. Tetapi kerana pemprosesan kod sewenang -wenangnya boleh menimbulkan risiko keselamatan jika anda tidak berhati -hati, nilai konfigurasi yang mengawal fungsi ini dimatikan secara lalai. Kita perlu terlebih dahulu menetapkan pilihan DOMPDF_ENABLE_PHP BENAR. Sebaik sahaja kami telah membolehkan pelaksanaan PHP sebaris, objek PDF akan disediakan dalam skrip, yang boleh kita gunakan untuk memanipulasi halaman. Kami boleh menambah teks, garisan, imej, segi empat tepat, dan lain -lain di mana sahaja di dalam halaman.
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
Skrip ini tertanam terus ke dalam markup HTML, dan mula -mula membuka objek supaya kita dapat mempengaruhi rendering. Semua lukisan akan direkodkan ke dalam objek itu dan kami boleh menambah objek ini ke semua atau halaman yang dipilih (walaupun terdapat batasan). Seterusnya kita mengambil lebar dan ketinggian sebenar halaman untuk mengira koordinat footer yang kita ingin tambah. Juga, kita perlu menyediakan objek fon semasa kita menambah kandungan teks. Font_metrics :: get_font () membolehkan kita membuat objek yang kita perlukan. Kami juga mengambil ketinggian font yang diberikan pada saiz fonnya menggunakan get_font_height () untuk mengira kedudukan untuk kandungan footer. Kaedah get_font_width () mengembalikan lebar teks kami untuk saiz fon dan fon yang diberikan juga digunakan dalam pengiraan kami. Kaedah garis () menarik garis dari titik (x1, y1) hingga (x2, x2). Perhatikan bahawa nilai warna yang kami berikan bukan nilai RGB sebenar. Kelas PDF yang mendasari memerlukan nilai antara 0 dan 1 dan oleh itu kami menukar nilai RGB ke dalam nilai -nilai baru ini. Untuk mendapatkan penghampiran yang lebih baik, anda boleh membahagikannya dengan 255. Kami menambah nombor halaman untuk setiap halaman menggunakan kaedah page_text (), yang menerima kedudukan x dan y, teks yang akan ditambah, objek fon, saiz fon, dan warna. Dompdf secara automatik menggantikan nilai untuk {page_num} dan {page_count} dalam setiap halaman, dan membuat $ pdf tersedia untuk kami. Apabila PDF membuat, bahagian footer akan kelihatan seperti ini:

PHP Master | Tukar HTML ke PDF dengan DOMPDF Adalah mungkin untuk mengelakkan menggunakan PHP sebaris dan mencapai kesan yang sama secara langsung dari PHP, seperti SO:

git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
Perhatikan bahawa kami meletakkan kod selepas memanggil $ dompdf-> render () kerana kami pada dasarnya mengubahsuai PDF yang diberikan.

Kesimpulan

Dalam artikel ini, kami membincangkan cara menukar HTML dengan mudah menggunakan DOMPDF. Walaupun DOMPDF adalah perpustakaan yang hebat, ia bukan penyelesaian peluru untuk menghasilkan dokumen PDF; Ia mempunyai beberapa batasan dan isu. DOMPDF tidak benar-benar bertolak ansur dengan HTML yang kurang terbentuk, dan jadual besar dapat dengan mudah menyebabkan anda kehabisan ingatan. Sesetengah ciri CSS asas seperti Float tidak disokong sepenuhnya dan hanya ada sokongan terhad untuk CSS3. Jika anda memerlukan ciri -ciri yang tidak disokong oleh DOMPDF, sesuatu seperti WKHTMLTOPDF mungkin penyelesaian yang lebih baik untuk anda. Namun, DompDF agak mudah dan sesuai untuk majoriti keperluan eksport PDF. Sangat sukar untuk menerangkan semua ciri yang disediakan oleh perpustakaan dalam artikel seperti ini, jadi pastikan untuk menyemak dokumentasi dan kod sumber juga untuk mempelajari ciri -ciri sejuk seperti menambahkan panggilan balik, menggunakan fon tersuai, dan lain -lain. Juga, i Saya gembira dapat membantu anda dalam kepakaran saya yang terhad. Jangan ragu untuk meninggalkan soalan anda dan berkongsi pengalaman anda di bahagian komen. imej melalui Fotolia Dan jika anda suka membaca siaran ini, anda akan suka dipelajari; Tempat untuk mempelajari kemahiran dan teknik segar dari Sarjana. Ahli mendapat akses segera ke semua ebook dan kursus dalam talian interaktif SitePoint, seperti Jump Start PHP. Komen mengenai artikel ini ditutup. Ada soalan mengenai PHP? Mengapa tidak bertanya di forum kami? Soalan Lazim (Soalan Lazim) Mengenai Menukar HTML ke PDF dengan DompDF

Apa itu DompDF dan mengapa ia digunakan? Ia digunakan kerana ia boleh mengendalikan susun atur HTML yang kompleks, termasuk gaya CSS, JavaScript, dan imej. Ia adalah alat yang berkuasa untuk pemaju yang perlu menghasilkan dokumen PDF dari kandungan HTML. Ia mudah digunakan, fleksibel, dan boleh diintegrasikan ke dalam aplikasi PHP. Anda boleh memasang komposer dan kemudian menjalankan 'komposer perintah memerlukan dompdf/dompdf'. Ini akan memuat turun dan memasang perpustakaan DOMPDF dalam projek anda.

Bolehkah saya menggunakan CSS dengan DOMPDF?

Ya, DompDF menyokong CSS. Anda boleh menggunakan CSS sebaris dalam HTML anda, atau anda boleh menghubungkan ke fail CSS luaran. DOMPDF akan menggunakan gaya apabila menjana PDF. Walau bagaimanapun, sila ambil perhatian bahawa tidak semua sifat CSS disokong.

Bagaimana saya menambah imej ke PDF saya? . Atribut 'SRC' harus menunjuk pada fail imej. DOMPDF akan memasukkan imej dalam PDF yang dihasilkan.

Bolehkah saya menghasilkan PDF dengan beberapa halaman? Sekiranya kandungan HTML anda cukup lama untuk merangkumi beberapa halaman, DOMPDF akan secara automatik memisahkannya ke halaman. Anda juga boleh menambah pecahan halaman secara manual menggunakan CSS.

Bagaimana saya menetapkan saiz dan orientasi halaman?

Anda boleh menetapkan saiz dan orientasi halaman menggunakan kaedah 'set_paper'. Sebagai contoh, anda boleh menggunakan '$ dompdf-> set_paper (' a4 ',' landscape ')' untuk menetapkan saiz halaman ke A4 dan orientasi ke landskap. > Ya, DompDF boleh digunakan dengan Laravel. Terdapat pakej Laravel yang dipanggil 'laravel-dompdf' yang menyediakan cara mudah untuk menggunakan dompdf dalam aplikasi laravel. PDF yang dihasilkan ke fail menggunakan kaedah 'output' dan fungsi 'file_put_contents'. Sebagai contoh, anda boleh menggunakan 'file_put_contents (' mypdf.pdf ', $ dompdf-> output ())' untuk menyimpan pdf ke fail bernama 'mypdf.pdf'. Sebagai respons dalam aplikasi web? Anda boleh menggunakan kaedah 'Stream' untuk menghantar PDF terus ke penyemak imbas. Adalah penting untuk memastikan pemasangan DOMPDF anda terkini dan mengkaji garis panduan keselamatan yang disediakan oleh pasukan DOMPDF.

Atas ialah kandungan terperinci PHP Master | Tukar HTML ke PDF dengan DOMPDF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:Kelas Koleksi di PHPArtikel seterusnya:Kelas Koleksi di PHP