PHP PDF benchmark (mPDF, TCPDF, Dompdf)

สรุป

จากการทดสอบวัดประสิทธิภาพ ดูเหมือนว่าถ้าหากกำหนดเอกสารอย่างง่ายๆที่สุด รายที่ทำความเร็วได้ดีที่สุดคือ mPDF และใช้หน่วยความจำน้อยที่สุดคือ Dompdf. แต่เมื่อมีการสร้างเอกสารจำนวนหลักร้อยหน้า รายที่ทำความเร็วได้ดีที่สุด และใช้หน่วยความจำน้อยที่สุด คือ TCPDF ทั้งคู่ ในขณะที่ Dompdf นั้นการสร้างเอกสารหลายๆหน้าทำได้ลำบากกว่ากันมาก รวมถึงใช้เวลานาน หน่วยความจำแค่ 32 MB ก็ไม่เพียงพอ ในโค้ดจึงต้องเพิ่มไปให้ถึง 64 MB เพราะใช้จริงประมาณ 37 MB นอกจากนี้เรื่องความเร็วในการประมวลผลก็เกิน 30 วินาทีส่งผลให้เกิด execution time out ต้องเพิ่มเวลาประมวลผลให้อีกเช่นกัน.

สำหรับผู้เขียนแล้วรู้สึกผิดหวังกับ Dompdf ค่อนข้างมากเพราะการสร้างเอกสารหลายๆหน้าทำได้ไม่ดีเสียเลย รวมถึงการกำหนดฟอนต์ของ element h1 ก็ไม่สามารถกำหนดได้.
ถ้าเหลือตัวเลือกเพียง mPDF และ TCPDF นั้นก็ค่อนข้างตัดสินใจฝั่งใดฝั่งหนึ่งได้ยาก.

TCPDF มีอิสระในการกำหนดขนาดของหน่วยต่างๆ เช่น ขนาดกระดาษ, ขนาดขอบกระดาษ แม้เรื่องของขอบกระดาษจากโค้ดที่ใช้ทดสอบนี้จะมีพื้นที่ว่างด้านบนมากจนเกินไป แต่แก้ไขได้โดยกำหนด method setHtmlVSpace() หรือใช้ HTML แค่เฉพาะที่อยู่ภายใน body และแท็ก style เท่านั้น. แต่ TCPDF ก็ไม่ค่อยรองรับการใช้งาน style sheet มากนักจากตัวอย่างปัญหาเรื่องพื้นที่ว่างด้านบนของแท็ก h1 ซึ่งต้องใช้การแก้ผ่านการกำหนด method ทั้งที่ใน style sheet ก็กำหนดไว้อยู่แล้ว.

mPDF กำหนดหน่วยขนาดได้เพียง"มิลลิเมตร"เท่านั้น ซึ่งจะต้องมาแปลงค่าอีกวุ่นวายพอสมควร แต่ว่า mPDF นั้นรองรับการทำงานของ style sheet ได้ดีกว่ากันมาก อีกทั้งยังสามารถใช้ HTML ได้เต็มตั้งแต่ doctype ลงมา. ดู HTML ที่รองรับเพิ่มเติมได้ที่เว็บของ mPDF.

ในส่วนของปัญหา (Issue) บน GitHub ของทั้งสองนั้น จากวันที่ปัจจุบัน (18 ธ.ค. 2562) mPDF มีผู้แจ้งปัญหา 238 รายการ ปิดไปแล้ว 643 รายการ, TCPDF มีผู้แจ้งปัญหา 3 รายการ ปิดไปแล้ว 3 รายการ, Dompdf มีผู้แจ้งปัญหา 699 รายการ ปิดไปแล้ว 1068 รายการ.

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น

คุณอาจใช้แท็กHTMLและแอททริบิวต์เหล่านี้: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.