การแปลงไฟล์ PDF เป็นภาพด้วย ImageMagick

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

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

fonfonn
PHP Super Member
PHP Super Member
Posts: 215
Joined: 11/07/2022 9:28 am

การแปลงไฟล์ PDF เป็นภาพด้วย ImageMagick

Post by fonfonn »

การแปลงไฟล์ PDF เป็นไฟล์ ภาพ ผ่าน ภาษา python มีเครื่องมือที่ช่วยให้การทำงานตรงจุดนี้อยู่หลากหลาย โดยในบทความนี้จะเป็นารแนะนำการใช้ ImageMagick ในการแปลงไฟล์ PDF เป็นไฟล์ ภาพ โดยมีขั้นตอนคือ
ขั้นที่ 1 ให้ทำการติดตั้งตัว Ghostscript
ขั้นที่ 2 ทำการติดตั้งตั้ว imagemagick
ขั้นที่ 3 ทำการโค้ดดิ้งในส่วนของภาษา python
  • การแปลงไฟล์ PDF เป็นไฟล์ ภาพ แบบไฟล์ PDF มีเพียงหน้าเดียว

    Code: Select all

    import subprocess
                                                #ส่วนของไฟล์PDFต้นฉบับโดยต้องระบุ path ของที่เก็บไฟล์ให้ถูกต้อง   #ส่วนของไฟล์ภาพที่แปลงโดยต้องระบุ path ที่จะเก็บไฟล์ให้ถูกต้อง
    process = subprocess.Popen(r"Magick convert C:/Users/fonfo/Downloads/test/lernpython.pdf           C:/Users/fonfo/Downloads/test/lernpython.png", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = process.communicate()
    • ผลลัพธ์ที่ได้
      • ไฟล์ PDF ก่อนแปลงเป็นไฟล์ภาพ
        ไฟล์ PDF ต้นฉบับแบบหน้าเดียว ก่อนแปลง
        ไฟล์ PDF ต้นฉบับแบบหน้าเดียว ก่อนแปลง
        pdfต้นฉบับแบบหน้าเดียว.png (4.03 KiB) Viewed 41 times
      • ไฟล์ภาพที่แปลงได้ โดยมีชื่อไฟล์ว่า lernpython.png ตามที่เราระบุไว้ใน path
        ไฟล์ภาพที่แปลงได้
        ไฟล์ภาพที่แปลงได้
        ไฟล์ภาพที่แปลงได้.png (5.84 KiB) Viewed 41 times
  • การแปลงไฟล์ PDF เป็นไฟล์ ภาพ แบบไฟล์ PDF ที่มีหลายหน้า ซึ่งจะใช้โค้ดเดียวกัน แต่ในการเก็บไฟล์เราจะทำการสร้างโฟร์เดอร์เพื่อเก็บไฟล์รูปที่แปลงได้นั้นเพื่อให้ง่ายต่อการค้าหา

    Code: Select all

    import subprocess
                                                #ส่วนของไฟล์PDFต้นฉบับโดยต้องระบุ path ของที่เก็บไฟล์ให้ถูกต้อง   #ส่วนของไฟล์ภาพที่แปลงโดยต้องระบุ path ที่จะเก็บไฟล์ให้ถูกต้อง
    process = subprocess.Popen(r"Magick convert C:/Users/fonfo/Downloads/test/pythonPDF.pdf          C:/Users/fonfo/Downloads/test/pythonPDF/pythonPDF.jpg", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = process.communicate()
    • ผลลัพธ์ที่ได้
      • ไฟล์ PDF ก่อนแปลงเป็นไฟล์ภาพ ซึ่งจะมีอยู่ทั้งหมด 4 หน้า
        ไฟล์ PDF ต้นฉบับแบบหลายหน้า ก่อนแปลง
        ไฟล์ PDF ต้นฉบับแบบหลายหน้า ก่อนแปลง
        pdfต้นฉบับแบบหลายหน้า.png (113.76 KiB) Viewed 41 times
      • ไฟล์ภาพที่แปลงได้ โดยมีชื่อไฟล์ว่า pythonPDF-(ตามด้วยจำนวนเลข โดยเริ่มจาก 0).png ตามที่เราระบุไว้ใน path
        ไฟล์ภาพที่แปลงได้โดยแยกเป็นไฟล์ภาพแต่ละหน้า ทั้งหมด 4 หน้า
        ไฟล์ภาพที่แปลงได้โดยแยกเป็นไฟล์ภาพแต่ละหน้า ทั้งหมด 4 หน้า
        ไฟล์ภาพที่แปลงได้แยกเป็นแต่ละหน้าๆ.png (42.82 KiB) Viewed 41 times
หากต้องการแปลงไฟล์ PDF พร้อมกันหลายไฟล์ก็สามารถทำได้ ตัวอย่างเช่น

Code: Select all

import subprocess

process = subprocess.Popen(r"Magick convert C:/Users/fonfo/Downloads/test/lernpython.pdf  C:/Users/fonfo/Downloads/test/lernpython.png", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 #แปลงแบบไฟล์ PFD ที่มีหน้าเดียว
process = subprocess.Popen(r"Magick convert C:/Users/fonfo/Downloads/test/pythonPDF.pdf C:/Users/fonfo/Downloads/test/pythonPDF/pythonPDF.jpg", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 #แปลงแบบไฟล์ PFD ที่มีหลายหน้าและสร้างโฟร์เดอร์เก็บแยก

out, err = process.communicate()
เพิ่มเติม ถ้าแปลงไฟล์ เป็น .png ไฟล์ภาพที่ได้จะเป็นพื้นหลังดำ ถ้าหากต้องการแปลงไฟล์ให้เป็นภาพพื้นหลังขาวปกติ ควรใช้ .jpg แทน จะได้ไฟล์ภาพที่มีพื้นหลังสีขาว

อ้างอิง
ดาวน์โหลด Ghostscript https://www.ghostscript.com/releases/gsdnld.html
ดาวน์โหลด imagemagick https://imagemagick.org/script/download.php
ตัวอย่างการใช้งานเพิ่มเติม การแปลง pdf เป็น image โดยใช้ imagemagick ผ่าน command line บน window
  • Similar Topics
    Replies
    Views
    Last post

Return to “Python Knowledge”

Who is online

Users browsing this forum: No registered users and 15 guests