ออกแบบรายงาน PDF ด้วย wkhtmltopdf ใน Odoo

หมวดสำหรับแบ่งบันความ รู้ต่างๆ จะมีหมวดย่อยๆ ในหมวดนี้ เช่น php, SQL, XML, CSS

Moderator: mindphp, ผู้ดูแลกระดาน

Bundith
PHP Hero Member
PHP Hero Member
โพสต์: 131
ลงทะเบียนเมื่อ: 06/05/2025 9:23 am

ออกแบบรายงาน PDF ด้วย wkhtmltopdf ใน Odoo

โพสต์ที่ยังไม่ได้อ่าน โดย Bundith »

ในระบบ ERP อย่าง Odoo การจัดทำรายงานเป็นสิ่งสำคัญมากที่ช่วยให้ผู้ใช้สามารถตรวจสอบข้อมูล วิเคราะห์ธุรกิจ และตัดสินใจได้อย่างแม่นยำ โดยเฉพาะรายงานในรูปแบบ PDF ที่สามารถพิมพ์ แจกจ่าย หรือจัดเก็บไว้เป็นหลักฐานทางธุรกิจได้ง่าย, Odoo ใช้เครื่องมือชื่อว่า wkhtmltopdf ในการแปลงเทมเพลต HTML เป็นไฟล์ PDF ด้วยความสามารถในการแสดงผล HTML ที่สมจริง พร้อมรองรับ CSS จึงสามารถออกแบบรายงานให้สวยงามและมืออาชีพได้อย่างยืดหยุ่น,บทความนี้จะอธิบายการทำงานของ wkhtmltopdf ใน Odoo พร้อมวิธีการออกแบบ Template รายงาน ยกตัวอย่างการใช้งานจริง ประโยชน์ และคำแนะนำเพื่อการนำไปใช้ในสถานการณ์จริง
Share Knowledge-1.png
Share Knowledge-1.png (13.96 KiB) Viewed 237 times
1. wkhtmltopdf คืออะไร?

wkhtmltopdf เป็นเครื่องมือโอเพ่นซอร์สที่ใช้สำหรับแปลง HTML เป็น PDF โดยอาศัย WebKit engine ซึ่งเป็น engine เดียวกับที่ใช้ในเบราว์เซอร์ เช่น Safari จึงสามารถแสดงผล HTML และ CSS ได้แม่นยำมาก

Odoo นำ wkhtmltopdf มาใช้ผ่านโมดูล report เพื่อสร้าง PDF จาก QWeb template (เทมเพลต HTML ที่ใช้ใน Odoo)

2. การติดตั้ง wkhtmltopdf

การใช้งาน Odoo เพื่อสร้าง PDF จำเป็นต้องติดตั้ง wkhtmltopdf บนเซิร์ฟเวอร์ก่อน:

โค้ด: เลือกทั้งหมด

sudo apt install wkhtmltopdf
หรือแนะนำให้ใช้เวอร์ชันที่ Odoo แนะนำ:

โค้ด: เลือกทั้งหมด

wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.6/wkhtmltox_0.12.6-1.bionic_amd64.deb
sudo apt install ./wkhtmltox_0.12.6-1.bionic_amd64.deb
หมายเหตุ: เวอร์ชันที่ไม่เหมาะสมอาจทำให้รายงานแสดงผิดพลาด เช่น ไม่แสดงรูปภาพหรือตารางเพี้ยน

3. การสร้าง PDF Report Template
Odoo ใช้ QWeb เป็นภาษาหลักในการออกแบบเทมเพลตรายงาน ตัวอย่างเช่น:

โค้ด: เลือกทั้งหมด

<t t-name="my_module.report_sample">
    <t t-call="web.html_container">
        <t t-foreach="docs" t-as="doc">
            <div class="page">
                <h2>รายงาน: <t t-esc="doc.name"/></h2>
                <p>วันที่: <t t-esc="doc.date"/></p>
            </div>
        </t>
    </t>
</t>
ส่วนประกอบที่สำคัญ:
  1. <t t-name>: ชื่อเทมเพลต
  2. <t t-call="web.html_container">: เรียก layout มาตรฐานของ Odoo
  3. <t t-foreach>: วนลูปข้อมูลแต่ละเอกสาร
  4. <div class="page">: แต่ละหน้าของ PDF
4. การผูกรายงานเข้ากับโมเดล
ในไฟล์ XML ของโมดูล ต้องสร้าง report record:

โค้ด: เลือกทั้งหมด

<report
    id="sample_report"
    string="Sample Report"
    model="your.model"
    report_type="qweb-pdf"
    name="my_module.report_sample"
    file="my_module.report_sample"
    print_report_name="(object.name or 'Sample') + ' Report'"/>
5. การทดสอบรายงาน
หลังจากติดตั้งโมดูลและกำหนดรายงานแล้ว ปุ่ม Print Report จะปรากฏในโมเดลที่กำหนด และสามารถกดเพื่อดาวน์โหลด PDF ได้ทันที

6. การตกแต่งรายงาน
  • ใช้ CSS: สามารถเขียน CSS ในเทมเพลตได้ เช่น

โค้ด: เลือกทั้งหมด

<style>
    h2 {
        color: #0055A4;
        border-bottom: 1px solid #000;
    }
    table th {
        background-color: #eee;
    }
</style>
  • แทรกภาพโลโก้:

โค้ด: เลือกทั้งหมด

<img t-att-src="'/web/image/res.company/' + str(doc.company_id.id) + '/logo'" width="150"/>
จัดการเลขหน้า:

โค้ด: เลือกทั้งหมด

<span class="page">หน้า <span class="pageNumber"/> จาก <span class="totalPages"/></span>
7. ข้อดีของการใช้ wkhtmltopdf ใน Odoo
  • แสดงผล HTML ได้แม่นยำ: รองรับ CSS/HTML ในระดับสูง ทำให้สามารถออกแบบสไตล์มืออาชีพ
  • รองรับหลายภาษา: ใช้ฟอนต์ภาษาไทย ญี่ปุ่น หรืออารบิก ได้ตามที่ติดตั้ง
  • แทรกภาพ โลโก้ และตารางได้ง่าย
  • สามารถเรียกใช้งานแบบ dynamic จากฐานข้อมูลแบบอัตโนมัติ
  • สั่งพิมพ์หลายหน้า หรือออกรายงานแบบกลุ่มได้
8. คำแนะนำในการใช้งานจริง
  • ควรใช้ wkhtmltopdf เวอร์ชันที่ Odoo แนะนำเท่านั้น
  • ตรวจสอบการติดตั้งฟอนต์ โดยเฉพาะหากใช้ภาษาไทย ต้องติดตั้งฟอนต์เช่น TH Sarabun New
  • ใช้คำสั่ง debug เช่น odoo-bin --dev=all เพื่อดู template render
  • หากใช้ Docker ควร map wkhtmltopdf และฟอนต์ให้ถูกต้อง
  • สร้าง base template ของรายงาน เพื่อให้สามารถ reuse โครงสร้างได้ง่ายในหลายโมดูล
  • ทดสอบรายงานกับข้อมูลจริงก่อน deploy production
9. ตัวอย่างกรณีการใช้งาน
  • ใบเสนอราคา (Quotation): ออกแบบให้ดูเรียบร้อย มีโลโก้บริษัท ตารางรายการสินค้า รวมภาษี และลายเซ็น
  • รายงานภาษี (Tax Summary): ดึงข้อมูลภาษีตามเดือน สร้างเป็นรายงานสรุปสำหรับส่งสรรพากร
  • ใบเสร็จรับเงิน: แสดงยอดที่รับชำระพร้อม QR Code และเลขอ้างอิง
สรุป
การสร้างรายงาน PDF ใน Odoo ด้วย wkhtmltopdf เป็นหนึ่งในความสามารถที่สำคัญและยืดหยุ่นมากที่สุดในระบบ ERP ช่วยให้ธุรกิจสามารถจัดทำรายงานที่เป็นมืออาชีพ และส่งมอบข้อมูลที่ถูกต้องแก่ลูกค้า ผู้บริหาร และหน่วยงานต่าง ๆ ได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็นใบเสนอราคา ใบกำกับภาษี หรือรายงานวิเคราะห์ภายใน การออกแบบเทมเพลตด้วย QWeb และใช้งาน wkhtmltopdf อย่างถูกต้อง จะช่วยให้ระบบรายงานขององค์กรคุณมีประสิทธิภาพสูง และตอบโจทย์ความต้องการทางธุรกิจได้อย่างแท้จริง

อ้างอิง
https://www.odoo.com/documentation/16.0/developer/reference/reports.html
https://github.com/wkhtmltopdf/wkhtmltopdf
https://www.odoo.com/forum/help-1/tag/wkhtmltopdf-774
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 7