ใช้ Imagick อ่านไฟล์ PDF ไม่ได้ขึ้น Error

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

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

ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16380
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

ใช้ Imagick อ่านไฟล์ PDF ไม่ได้ขึ้น Error

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

จะทำแปลง PDF เป็นไฟล์รูป (เช่น jpg, png) ด้วย Imagick php แต่ไม่สามารถอ่านไฟล์ PDF ได้ขึ้น Error
อยากจะรู้ว่าต้องเขียนแบบไหนค่ะ

code ส่วนที่เรียก PDF ขึ้นมา

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

$imgFullName="test.pdf";
$im = new Imagick();
$im->setResolution(300,300);
$im->readimage($imgFullName);
Error :

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

Fatal error: Uncaught ImagickException: not authorized `test.pdf' @ error/constitute.c/ReadImage/412 in /opt/lampp/htdocs/imagick/test.php:10 Stack trace: #0 /opt/lampp/htdocs/imagick/test.php(10): Imagick->readimage('test.pdf') #1 {main} thrown in /opt/lampp/htdocs/imagick/test.php on line 10
ลองเรียกอีกแบบที่ระบุหน้าก่อนก็ไม่ได้เช่นกัน

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

$imgFullName="test.pdf";
$im = new Imagick();
$im->setResolution(300,300);
$im->readimage($imgFullName.'[0]'); 
Error :

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

Fatal error: Uncaught ImagickException: not authorized `test.pdf' @ error/constitute.c/ReadImage/412 in /opt/lampp/htdocs/imagick/test.php:5 Stack trace: #0 /opt/lampp/htdocs/imagick/test.php(5): Imagick->readimage('test.pdf[0]') #1 {main} thrown in /opt/lampp/htdocs/imagick/test.php on line 5
ภาพประจำตัวสมาชิก
eange08
PHP VIP Members
PHP VIP Members
โพสต์: 16380
ลงทะเบียนเมื่อ: 22/12/2020 10:09 am

Re: ใช้ Imagick อ่านไฟล์ PDF ไม่ได้ขึ้น Error

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

แก้ไขได้แล้วนะคะ จะต้องไปเปิดสิทธิให้ ImageMagick สามารถอ่านและเขียนไฟล์ PDF ได้
เป็นวิธีแก้บน ubuntu คือ
1. เปิด Terminal ใส่คำสั่งเปิดโฟลเดอร์ด้วยสิทธิ root

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

sudo -i
nautilus
2. ให้เข้าไปโฟลเดอร์ etc/ImageMagick-6/policy.xml
ImageMagick-6_113.png
3. เปิดไฟล์ policy.xml ด้วยโปรแกรม gedit (โปรแกรมสำหรับ text Editor)
ให้ค้นหาคำว่า "pdf" จะเจอท่อนนี้

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

<policy domain="coder" rights="none" pattern="PDF" />
4. ในส่วนของ rights="none" ให้เปลี่ยนเป็น rights="read|write"

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

<policy domain="coder" rights="read|write" pattern="PDF" />
5. ทำการบันทึกไฟล์ แล้ว restart ตัว service ของ xampp ด้วยคำสั่ง

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

/opt/lampp/lampp restart
ก็จะสามารถแปลงไฟล์ภาพเป็น PDF ได้
ในส่วนของ code ทดสอบการแปลง JPG เป็น PDF

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

<?php $image = new Imagick('test.jpg');  //-----ใส่ชื่อไฟล์ภาพที่เราต้องการแปลง
$image->setImageFormat('pdf');  //------บอก format ไฟล์ที่เราจะแปลง
$image->writeImages('conv_pdf.pdf',false); //------แปลงเป็น PDF แล้วบันทึกลงเครื่อง

echo 'ok';
?>
ผลลัพท์
Screenshot from 2021-01-12 17-23-12.png
Firpo2019
PHP Newbie
PHP Newbie
โพสต์: 4
ลงทะเบียนเมื่อ: 26/01/2021 9:47 am

Re: ใช้ Imagick อ่านไฟล์ PDF ไม่ได้ขึ้น Error

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

ImageMagic เป็นซอฟต์แวร์สำหรับสร้างแก้ไขและแต่งภาพบิตแมป ช่วยให้คุณสามารถอ่านแปลงและเขียนภาพได้หลากหลายรูปแบบ ตั้งแต่ PNG, JPEG หรือ GIF เป็น PDF, PhotoCD และอื่น ๆ ไปจนถึงมากกว่าร้อยรูปแบบ
ตอนนี้เรารู้แล้วว่า ImageMagic คืออะไรมาดูกันว่าเราต้องมีอะไรบ้างเพื่อให้สามารถทำงานกับ Imagick ได้
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

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

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