Paket ini menyediakan kelas yang mudah digunakan untuk mengonversi PDF menjadi satu atau lebih gambar.
Anda harus menginstal Imagick dan Ghostscript. Lihat masalah mengenai Masalah Ghostscript dan Imagick untuk informasi lebih lanjut.
Paket ini dapat diinstal melalui composer dan memerlukan PHP 8.2+:
composer require spatie/pdf-to-image
Jika Anda menggunakan PHP <8.2, gunakan versi 2.0 dari paket ini.
Mengonversi PDF menjadi gambar itu mudah.
$ pdf = new Spatie PdfToImage Pdf ( $ pathToPdf );
$ pdf -> save ( $ pathToWhereImageShouldBeStored );
Jika nama file yang Anda berikan ke saveImage
memiliki ekstensi jpg
, jpeg
, png
, atau webp
, gambar akan disimpan dalam format tersebut; jika tidak, format keluarannya adalah jpg
.
Metode save()
mengembalikan array dengan nama file gambar yang disimpan jika beberapa gambar disimpan, jika tidak, mengembalikan string dengan jalur ke gambar yang disimpan.
Dapatkan jumlah total halaman dalam pdf:
/** @var int $numberOfPages */
$ numberOfPages = $ pdf -> pageCount ();
Periksa apakah jenis file adalah format keluaran yang didukung:
/** @var bool $isSupported */
$ isSupported = $ pdf -> isValidOutputFormat ( ' jpg ' );
Secara default, hanya halaman pertama PDF yang akan ditampilkan. Untuk merender halaman lain, panggil metode selectPage()
:
$ pdf -> selectPage ( 2 )
-> save ( $ pathToWhereImageShouldBeStored ); //saves the second page
Atau, pilih beberapa halaman dengan metode selectPages()
:
$ pdf -> selectPages ( 2 , 4 , 5 )
-> save ( $ directoryToWhereImageShouldBeStored ); //saves the 2nd, 4th and 5th pages
Ubah format keluaran:
$ pdf -> format ( Spatie PdfToImage Enums OutputFormat :: Webp )
-> save ( $ pathToWhereImageShouldBeStored ); //the saved image will be in webp format
Atur kualitas keluaran (kualitas kompresi) dari 0 hingga 100:
$ pdf -> quality ( 90 ) // set an output quality of 90 %
-> save ( $ pathToWhereImageShouldBeStored );
Atur DPI resolusi keluaran:
$ pdf -> resolution ( 300 ) // resolution of 300 dpi
-> save ( $ pathToWhereImageShouldBeStored );
Tentukan ukuran thumbnail gambar keluaran:
$ pdf
-> thumbnailSize ( 400 ) // set thumbnail width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
// or:
$ pdf
-> thumbnailSize ( 400 , 300 ) // set thumbnail width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
Atur lebar gambar keluaran:
$ pdf -> size ( 400 ) // set the width to 400 px; height is calculated automatically
-> save ( $ pathToWhereImageShouldBeStored );
Atur lebar dan tinggi gambar keluaran:
$ pdf -> size ( 400 , 300 ) // set the width to 400 px and the height to 300 px
-> save ( $ pathToWhereImageShouldBeStored );
Dapatkan dimensi PDF. Ini dapat digunakan untuk menentukan apakah PDF memiliki resolusi yang sangat tinggi.
/** @var SpatiePdfToImageDTOsPageSize $size */
$ size = $ pdf -> getSize ();
$ width = $ size -> width ;
$ height = $ size -> height ;
Catatan
$directoryToWhereImagesShouldBeStored harus berupa direktori yang sudah ada
Simpan semua halaman ke gambar:
$ pdf -> saveAllPages ( $ directoryToWhereImagesShouldBeStored );
Atur Metode Gabung Lapisan untuk Imagick:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: Merge );
// or disable layer merging:
$ pdf -> layerMethod ( Spatie PdfToImage Enums LayerMethod :: None );
Atur warna latar belakang gambar keluaran:
$ pdf -> backgroundColor ( ' white ' ) // simple text for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' #fff ' ) // code for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
$ pdf -> backgroundColor ( ' rgb(255,255,255) ' ) // rgb for ' white ' color
-> save ( $ pathToWhereImageShouldBeStored );
Paket ini menggunakan Ghostscript melalui Imagick. Agar ini berfungsi, perintah Ghostscripts gs
harus dapat diakses dari proses PHP. Untuk proses PHP CLI (misalnya pekerjaan asinkron Laravel, perintah, dll...) hal ini biasanya sudah terjadi.
Namun untuk PHP di FPM (misalnya saat menjalankan paket ini "di browser") Anda mungkin mengalami masalah berikut:
Uncaught ImagickException: FailedToExecuteCommand 'gs'
Ini dapat diperbaiki dengan menambahkan baris berikut di akhir file php-fpm.conf
Anda dan memulai ulang PHP FPM. Jika Anda tidak yakin di mana letak file php-fpm.conf
Anda dapat memeriksa phpinfo()
. Jika Anda menggunakan Laravel Valet, file php-fpm.conf
akan ditempatkan di direktori /usr/local/etc/php/YOUR-PHP-VERSION
.
env[PATH] = /usr/local/bin:/usr/bin:/bin
Ini akan menginstruksikan PHP FPM untuk mencari biner gs
di tempat yang tepat.
Jika Anda menerima kesalahan dengan pesan attempt to perform an operation not allowed by the security policy 'PDF'
, Anda mungkin perlu menambahkan baris berikut ke file policy.xml
Anda. File ini biasanya terletak di /etc/ImageMagick-[VERSION]/policy.xml
, seperti /etc/ImageMagick-7/policy.xml
.
< policy domain = " coder " rights = " read | write " pattern = " PDF " />
spatie/pdf-to-image
menggunakan kerangka kerja PEST untuk pengujian unit. Mereka dapat dijalankan dengan perintah berikut:
./vendor/bin/pest
Silakan lihat CHANGELOG untuk informasi lebih lanjut tentang apa yang berubah baru-baru ini.
Silakan lihat KONTRIBUSI untuk rinciannya.
Harap tinjau kebijakan keamanan kami tentang cara melaporkan kerentanan keamanan.
Lisensi MIT (MIT). Silakan lihat File Lisensi untuk informasi lebih lanjut.