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

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

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

User avatar
eange08
PHP Super Hero Member
PHP Super Hero Member
Posts: 645
Joined: 22/12/2020 10:09 am

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

Post by eange08 »

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

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

Code: Select all

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

Code: Select all

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
ลองเรียกอีกแบบที่ระบุหน้าก่อนก็ไม่ได้เช่นกัน

Code: Select all

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

Code: Select all

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
User avatar
eange08
PHP Super Hero Member
PHP Super Hero Member
Posts: 645
Joined: 22/12/2020 10:09 am

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

Post by eange08 »

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

<?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
Posts: 4
Joined: 26/01/2021 9:47 am

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

Post by Firpo2019 »

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

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 13 guests