การเรนเดอร์ HTML ด้วย TCPDF (PHP)

ฉันใช้ฟังก์ชัน writeHtml ของ TCPDF สำหรับหน้าที่แสดงผลอย่างถูกต้องในเบราว์เซอร์ ในเอาต์พุต PDF แบบอักษรมีขนาดเล็กเกินไป ฉันได้ลองใช้ setFont แล้ว แต่ดูเหมือนว่าจะไม่มีผลใดๆ ไม่มีใครมีประสบการณ์เกี่ยวกับเรื่องนี้หรือไม่?

ฉันต้องการเพิ่มที่นี่ว่า HTML ไม่ได้อยู่ในการควบคุมของฉันเสมอไป ดังนั้นฉันต้องการทำสิ่งนี้ด้วยตัวเลือก TCPDF (และไม่ใช่โดยการแก้ไข html ต้นฉบับ)

อัปเดต: ฉันสามารถเปลี่ยนขนาดตัวอักษรได้โดยการตั้งค่าไว้บนเนื้อหา ปัญหาเดียวที่เหลืออยู่คือ หากต้องการแสดงผลอย่างถูกต้องในเบราว์เซอร์ จะต้องมีขนาด 12px หากต้องการแสดงผลอย่างถูกต้องใน PDF จะต้องมีขนาดประมาณ 30px ฉันตั้งค่าสื่อบน css หรือไม่? สื่อประเภทใดสำหรับ TCPDF คืออะไร


person navjotk    schedule 24.01.2012    source แหล่งที่มา
comment
คุณใช้หน่วยวัดประเภทใดใน CSS ของคุณ em, px, %, พอยต์?   -  person entropid    schedule 24.01.2012
comment
หากต้องการตั้งค่าแบบอักษร? ไม่มีอะไร. ฉันแค่ใช้ค่าเริ่มต้น มันแสดงผลได้ดีบนเบราว์เซอร์ แต่เล็กเกินไปบน TCPDF   -  person navjotk    schedule 24.01.2012
comment
นั่นอาจเป็นปัญหา ลองตั้งค่า font-size ในการประกาศ CSS เนื้อหา   -  person entropid    schedule 24.01.2012


คำตอบ (3)


คุณใช้แท็กหรือไม่? กลไก HTML ของ tcpdf ให้แท็กมีความสำคัญเหนือกว่า CSS หรือแท็กปรับขนาดอื่นๆ หากคุณลบแท็กที่ไม่เกี่ยวข้องออกจาก HTML และใช้ CSS แบบตรง สิ่งต่างๆ ควรแสดงผลตามที่คาดไว้ หรือหากคุณไม่ได้ใช้ CSS คุณก็ควรทำ เพียงเพราะเบราว์เซอร์แสดงอย่างถูกต้องไม่ได้หมายความว่าจะมีลักษณะเหมือนกันในรูปแบบอื่นๆ เบราว์เซอร์น่าจะใช้เวทย์มนตร์ของตัวเองเพื่อเติมเต็มช่องว่างในข้อกำหนด CSS ของคุณ


อัปเดต

นี่คือตัวอย่างการระบุการประกาศ CSS ด้วย HTML ของคุณเมื่อใช้ tcpdf โปรดทราบว่าการใช้สไตล์ทั้งหมดโดยใช้การประกาศ CSS ภายในแท็ก <style> ภายนอกเนื้อหา HTML จริง

<?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
คุณหมายถึงอะไรกันแน่? คุณกำลังถามฉันว่าฉันกำหนดขนาดตัวอักษรในแอตทริบิวต์ HTML หรือไม่? ไม่ ฉันจะลบแท็กทั้งหมดออกจาก HTML ได้อย่างไร - person navjotk; 24.01.2012
comment
บางคนยังคงใช้แท็ก <font> อย่างไม่ถูกต้อง สิ่งที่ฉันพูดคือคุณควรระบุ ทั้งหมด ตรรกะการแสดงผลของมาร์กอัปของคุณโดยใช้ CSS ตรวจสอบให้แน่ใจว่าคุณบอก tcpdf อย่างชัดเจนว่าคุณต้องการให้สิ่งต่าง ๆ แสดงขนาดใด เช่น body { font-size: large; } หรือ p { font-size: 2em; } - person rdlowrey; 24.01.2012
comment
ฉันสามารถทำสิ่งนี้กับพารามิเตอร์ TCPDF ได้หรือไม่ ฉันไม่ต้องการยุ่งกับ HTML ต้นฉบับ เนื่องจากอาจมีการปรับให้ทำงานกับ HTML ของบุคคลที่สามได้เช่นกัน ฉันสามารถเพิ่มสไตล์บางแบบแยกกันโดยใช้ TCPDF ได้หรือไม่ - person navjotk; 24.01.2012
comment
ใช่ เพียงประกาศการประกาศสไตล์ที่ตอนต้นของ html ยังไงก็ไม่ใช่แนวทางปฏิบัติที่ดีที่สุดในการระบุการประกาศ CSS แบบอินไลน์ของ HTML ฉันจะอัปเดตคำตอบเพื่อสาธิต - person rdlowrey; 24.01.2012
comment
ฉันไม่ทราบว่าคุณสามารถระบุ CSS บน writeHTML() ของ TCPDF ได้ มันไม่ได้กล่าวถึงในเอกสารด้วยซ้ำ คำตอบนี้ช่วยได้มาก ขอบคุณมาก! - person That Brazilian Guy; 13.08.2013

ทางออกที่ดีที่สุดสำหรับฉันคือการแทนที่ 'px' เป็น 'pt' ในโค้ด html:

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

ก่อนทางด้านซ้ายและหลังการเปลี่ยนทางด้านขวา: ก่อนทางด้านซ้ายและหลังทางด้านขวา

person Andrius V.    schedule 20.06.2013
comment
นี่เป็นวิธีแก้ปัญหาที่น่ากลัว ผู้เขียน PDF ใช้ pt, mm หรือ inch ด้วยเหตุผลที่ดี พิกเซลเป็นหน่วยขนาดคงที่ที่ใช้ในสื่อบนหน้าจอ (เช่น เพื่ออ่านบนหน้าจอคอมพิวเตอร์) Pixel ย่อมาจากองค์ประกอบของรูปภาพ และอย่างที่คุณทราบ หนึ่งพิกเซลคือสี่เหลี่ยมจัตุรัสเล็กๆ บนหน้าจอของคุณ คะแนนมักใช้ในสื่อสิ่งพิมพ์ (สิ่งใดก็ตามที่จะพิมพ์บนกระดาษ ฯลฯ) หนึ่งจุดเท่ากับ 1/72 นิ้ว จุดมีความคล้ายคลึงกับพิกเซลมาก เนื่องจากเป็นหน่วยที่มีขนาดคงที่และไม่สามารถปรับขนาดได้ - person ; 13.07.2015

TCPDF รู้จัก CSS พื้นฐาน เช่น ขนาดฟอนต์ สีฟอนต์ และตระกูลฟอนต์

หากต้องการข้อมูลเพิ่มเติมเล็กๆ น้อยๆ โปรดดูที่ TCPDF ไม่แสดงผลคุณสมบัติ CSS ทั้งหมด

person Jeremy Harris    schedule 24.01.2012
comment
ปัญหาคือว่า HTML ไม่ได้อยู่ในการควบคุมของฉันเสมอไป ไม่มีทางที่ฉันสามารถทำได้นอกเอกสารใช่ไหม อาจจะส่ง CSS บางส่วนไปพร้อมกับ HTML? - person navjotk; 24.01.2012