Render HTML dengan TCPDF(PHP)

Saya menggunakan fungsi writeHtml TCPDF untuk halaman yang ditampilkan dengan benar di browser. Dalam PDF keluaran, fontnya terlalu kecil. Saya sudah mencoba dengan setFont, tetapi sepertinya tidak ada efeknya. Apakah ada yang punya pengalaman dengan ini?

Saya ingin menambahkan di sini bahwa HTML tidak selalu dalam kendali saya, jadi saya lebih suka melakukan ini dengan opsi TCPDF (dan bukan dengan memodifikasi sumber html)

PEMBARUAN: Saya dapat mengubah ukuran font dengan mengaturnya di badan. Satu-satunya masalah yang tersisa adalah, untuk merender dengan benar di browser, ukurannya harus 12px. Untuk merender dengan benar dalam PDF, ukurannya harus sekitar 30 piksel. Apakah saya mengatur media di css? Apa jenis media untuk TCPDF?


person navjotk    schedule 24.01.2012    source sumber
comment
Unit pengukuran apa yang Anda gunakan di CSS Anda? em, px, %, pt?   -  person entropid    schedule 24.01.2012
comment
Untuk mengatur font? Tidak ada apa-apa. Saya hanya menggunakan default. Ini ditampilkan dengan baik di browser tetapi terlalu kecil di TCPDF.   -  person navjotk    schedule 24.01.2012
comment
Itu mungkin masalahnya, coba setel font-size di badan deklarasi CSS.   -  person entropid    schedule 24.01.2012


Jawaban (3)


Apakah Anda menggunakan tag? Mesin HTML tcpdf memberikan tag lebih diutamakan daripada CSS apa pun, atau tag penyesuaian ukuran lainnya. Jika Anda menghapus tag asing apa pun dari HTML dan menggunakan CSS langsung, semuanya akan ditampilkan seperti yang diharapkan. Atau, jika Anda tidak menggunakan CSS, Anda harus melakukannya. Hanya karena browser menampilkannya dengan benar bukan berarti tampilannya akan sama pada format lain. Browser kemungkinan telah melakukan keajaibannya sendiri untuk mengisi kekosongan dalam spesifikasi CSS Anda.


PEMBARUAN

Berikut ini contoh menentukan deklarasi CSS dengan HTML Anda saat menggunakan tcpdf. Perhatikan bagaimana semua gaya diterapkan menggunakan deklarasi CSS di dalam tag <style> di luar badan HTML sebenarnya.

<?php

$html = <<<EOF
<!-- EXAMPLE OF CSS STYLE -->
<style>
  h1 {
    color: navy;
    font-family: times;
    font-size: 24pt;
    text-decoration: underline;
  }
  p {
    color: red;
    font-family: helvetica;
    font-size: 12pt;
  }
</style>
<body>
<h1>Example of <i>HTML + CSS</i></h1>
<p>Example of 12pt styled paragraph.</p>
</body>
EOF;

$pdf->writeHTML($html, true, false, true, false, '');

?>
person rdlowrey    schedule 24.01.2012
comment
Apa sebenarnya maksud Anda? Apakah Anda bertanya kepada saya apakah saya menentukan ukuran font di suatu tempat di atribut HTML? Tidak. Bagaimana cara menghapus semua tag dari HTML? - person navjotk; 24.01.2012
comment
Beberapa orang masih secara keliru menggunakan hal-hal seperti tag <font>. Maksud saya adalah Anda harus menentukan semua logika tampilan markup Anda menggunakan CSS. Pastikan Anda secara eksplisit memberi tahu tcpdf ukuran apa yang ingin Anda tampilkan, seperti body { font-size: large; } atau p { font-size: 2em; } - person rdlowrey; 24.01.2012
comment
Bisakah saya melakukan ini dengan parameter TCPDF? Saya tidak ingin mengacaukan HTML sumber karena ini mungkin diadaptasi untuk bekerja dengan HTML pihak ketiga juga. Bisakah saya menambahkan beberapa gaya secara terpisah, menggunakan TCPDF? - person navjotk; 24.01.2012
comment
Ya, cukup deklarasikan deklarasi gaya di awal html -- tetap saja bukanlah praktik terbaik untuk menentukan deklarasi HTML sebaris CSS. Saya akan memperbarui jawaban untuk menunjukkan. - person rdlowrey; 24.01.2012
comment
Saya tidak menyadari Anda dapat menentukan CSS pada writeHTML() TCPDF. Itu bahkan tidak disebutkan dalam dokumentasi. Jawaban ini sangat membantu, terima kasih banyak! - person That Brazilian Guy; 13.08.2013

Solusi terbaik yang berhasil bagi saya adalah mengganti 'px' menjadi 'pt' dalam kode html:

$tidy = str_replace ('px', 'pt', $tidy);

Sebelum di sisi kiri dan setelah penggantian di kanan: Sebelum di sisi kiri dan sesudah di kanan

person Andrius V.    schedule 20.06.2013
comment
Ini adalah solusi yang buruk. Penulis PDF menggunakan pt, mm atau inci untuk alasan yang sangat bagus. Piksel adalah satuan berukuran tetap yang digunakan dalam media layar (yaitu untuk dibaca di layar komputer). Pixel adalah singkatan dari elemen gambar dan seperti yang Anda ketahui, satu piksel adalah satu kotak kecil di layar Anda. Poin secara tradisional digunakan dalam media cetak (apa pun yang ingin dicetak di atas kertas, dll.). Satu titik sama dengan 1/72 inci. Titik mirip dengan piksel, karena merupakan satuan berukuran tetap dan tidak dapat diskalakan ukurannya. - person ; 13.07.2015

TCPDF mengenali CSS dasar seperti ukuran font, warna font, dan keluarga font.

Untuk informasi lebih lanjut, lihat TCPDF tidak merender semua properti CSS

person Jeremy Harris    schedule 24.01.2012
comment
Masalahnya adalah HTML tidak selalu berada dalam kendali saya. Apakah tidak ada cara agar saya bisa melakukan ini di luar dokumen? Mungkin meneruskan beberapa CSS bersama dengan HTML? - person navjotk; 24.01.2012