Optimalkan, Kompres atau Kurangi Ukuran PDF di Python
Sebuah dokumen PDF kadang-kadang dapat berisi data tambahan. Mengurangi ukuran file PDF akan membantu Anda mengoptimalkan transfer jaringan dan penyimpanan. Ini sangat berguna untuk dipublikasikan di halaman web, dibagikan di jejaring sosial, dikirim melalui e-mail, atau diarsipkan dalam penyimpanan. Kita dapat menggunakan beberapa teknik untuk mengoptimalkan PDF:
- Optimalkan konten halaman untuk penelusuran online
- Kecilkan atau kompres semua gambar
- Aktifkan penggunaan ulang konten halaman
- Gabungkan aliran duplikat
- Hapus penyematan font
- Hapus objek yang tidak digunakan
- Hapus bidang formulir pelipatan
- Hapus atau lipat anotasi
Optimalkan Dokumen PDF untuk Web
Optimasi, atau linearisasi untuk Web, merujuk pada proses membuat file PDF cocok untuk penelusuran online menggunakan peramban web. Untuk mengoptimalkan file untuk tampilan web:
- Buka dokumen input dalam objek Document.
- Gunakan metode Optimize.
- Simpan dokumen yang telah dioptimalkan menggunakan metode save().
Cuplikan kode berikut menunjukkan cara mengoptimalkan dokumen PDF untuk web.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Optimalkan untuk web
document.optimize()
# Simpan dokumen keluaran
document.save(output_pdf)
Kurangi Ukuran PDF
Metode OptimizeResources() memungkinkan Anda untuk mengurangi ukuran dokumen dengan menghilangkan informasi yang tidak diperlukan. Secara default, metode ini bekerja sebagai berikut:
-
Sumber daya yang tidak digunakan pada halaman dokumen dihapus
-
Sumber daya yang sama digabungkan menjadi satu objek
-
Objek yang tidak digunakan dihapus
The snippet below is an example. Note, though, that this method cannot guarantee document shrinking.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Optimalkan dokumen PDF. Namun, perlu dicatat bahwa metode ini tidak dapat menjamin pengecilan dokumen
document.optimize_resources()
# Simpan dokumen yang diperbarui
document.save(output_pdf)
Manajemen Strategi Optimasi
Kita juga dapat menyesuaikan strategi optimasi. Saat ini, metode OptimizeResources() menggunakan 5 teknik. Teknik-teknik ini dapat diterapkan menggunakan metode OptimizeResources() dengan parameter OptimizationOptions.
Mengecilkan atau Mengompresi Semua Gambar
Kita memiliki dua cara untuk bekerja dengan gambar: mengurangi kualitas gambar dan/atau mengubah resolusinya. Dalam hal apapun, ImageCompressionOptions harus diterapkan. Dalam contoh berikut, kita mengecilkan gambar dengan mengurangi ImageQuality menjadi 50.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Inisialisasi OptimizationOptions
optimizeOptions = ap.optimization.OptimizationOptions()
# Atur opsi CompressImages
optimizeOptions.image_compression_options.compress_images = True
# Atur opsi ImageQuality
optimizeOptions.image_compression_options.image_quality = 50
# Optimalkan dokumen PDF menggunakan OptimizationOptions
document.optimize_resources(optimizeOptions)
# Simpan dokumen yang diperbarui
document.save(output_pdf)
Menghapus Objek yang Tidak Digunakan
Dokumen PDF terkadang berisi objek PDF yang tidak dirujuk dari objek lain dalam dokumen. Ini dapat terjadi, misalnya, ketika sebuah halaman dihapus dari pohon halaman dokumen tetapi objek halaman itu sendiri tidak dihapus. Menghapus objek-objek ini tidak membuat dokumen menjadi tidak valid, melainkan mengecilkannya.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Atur opsi RemoveUsedObject
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.remove_unused_objects = True
# Optimalkan dokumen PDF menggunakan OptimizationOptions
document.optimize_resources(optimizeOptions)
# Simpan dokumen yang telah diperbarui
document.save(output_pdf)
Menghapus Stream yang Tidak Digunakan
Kadang-kadang dokumen berisi stream sumber daya yang tidak digunakan. These streams are not “unused objects” karena mereka direferensikan dari kamus sumber halaman. Oleh karena itu, mereka tidak dihapus dengan metode “remove unused objects”. Tetapi stream ini tidak pernah digunakan dengan konten halaman. Ini mungkin terjadi dalam kasus ketika sebuah gambar telah dihapus dari halaman tetapi tidak dari sumber halaman. Juga, situasi ini sering terjadi ketika halaman diekstraksi dari dokumen dan halaman dokumen memiliki sumber daya “umum”, yaitu, objek Sumber Daya yang sama. Konten halaman dianalisis untuk menentukan apakah stream sumber daya digunakan atau tidak. Stream yang tidak digunakan dihapus. Ini kadang-kadang mengurangi ukuran dokumen. Penggunaan teknik ini mirip dengan langkah sebelumnya:
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Atur opsi RemoveUsedStreams
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.remove_unused_streams = True
# Optimalkan dokumen PDF menggunakan OptimizationOptions
document.optimize_resources(optimizeOptions)
# Simpan dokumen yang diperbarui
document.save(output_pdf)
Menghubungkan Stream Duplikat
Beberapa dokumen dapat berisi beberapa aliran sumber daya yang identik (seperti gambar, misalnya). Ini dapat terjadi, misalnya ketika sebuah dokumen digabungkan dengan dirinya sendiri. Dokumen keluaran berisi dua salinan independen dari aliran sumber daya yang sama. Kami menganalisis semua aliran sumber daya dan membandingkannya. Jika aliran tersebut diduplikasi, mereka digabungkan, yaitu, hanya satu salinan yang tersisa. Referensi diubah sesuai, dan salinan objek dihapus. Dalam beberapa kasus, ini membantu mengurangi ukuran dokumen.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Atur opsi LinkDuplcateStreams
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.link_duplcate_streams = True
# Optimalkan dokumen PDF menggunakan OptimizationOptions
document.optimize_resources(optimizeOptions)
# Simpan dokumen yang diperbarui
document.save(output_pdf)
Menghapus Penyematan Font
Jika dokumen menggunakan font yang disematkan, itu berarti bahwa semua data font disimpan dalam dokumen. Keuntungannya adalah dokumen dapat dilihat terlepas dari apakah font diinstal pada mesin pengguna atau tidak. Namun, menyematkan font membuat dokumen menjadi lebih besar. Metode unembed fonts menghapus semua font yang disematkan. Dengan demikian, ukuran dokumen berkurang tetapi dokumen itu sendiri mungkin menjadi tidak terbaca jika font yang benar tidak diinstal.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Setel opsi UnembedFonts
optimizeOptions = ap.optimization.OptimizationOptions()
optimizeOptions.unembed_fonts = True
# Optimalkan dokumen PDF menggunakan OptimizationOptions
document.optimize_resources(optimizeOptions)
# Simpan dokumen yang diperbarui
document.save(output_pdf)
file_stats_1 = os.stat(input_pdf)
file_stats_2 = os.stat(output_pdf)
print(
"Ukuran file asli: {}. Ukuran file yang dikurangi: {}".format(
file_stats_1.st_size, file_stats_2.st_size
)
)
Sumber daya optimasi menerapkan metode ini ke dokumen. Jika salah satu dari metode ini diterapkan, ukuran dokumen kemungkinan besar akan berkurang. Jika tidak ada metode ini yang diterapkan, ukuran dokumen tidak akan berubah yang mana sudah jelas.
Cara Tambahan untuk Mengurangi Ukuran Dokumen PDF
Menghapus atau Meratakan Anotasi
Anotasi dapat dihapus ketika tidak diperlukan. Ketika diperlukan tetapi tidak memerlukan pengeditan tambahan, dapat diratakan. Kedua teknik ini akan mengurangi ukuran file.
import aspose.pdf as ap
# Buka dokumen
document = ap.Document(input_pdf)
# Ratakan anotasi
for page in document.pages:
for annotation in page.annotations:
annotation.flatten()
# Simpan dokumen yang diperbarui
document.save(output_pdf)
Menghapus Bidang Formulir
Jika dokumen PDF berisi AcroForms, kita dapat mencoba mengurangi ukuran file dengan meratakan bidang formulir.
import aspose.pdf as ap
# Muat formulir PDF sumber
doc = ap.Document(input_pdf)
# Ratakan Formulir
if len(doc.form.fields) > 0:
for item in doc.form.fields:
item.flatten()
# Simpan dokumen yang diperbarui
doc.save(output_pdf)
Mengonversi PDF dari ruang warna RGB ke skala abu-abu
File PDF terdiri dari Teks, Gambar, Lampiran, Anotasi, Grafik, dan objek lainnya. Anda mungkin memiliki kebutuhan untuk mengonversi PDF dari ruang warna RGB ke skala abu-abu agar lebih cepat saat mencetak file PDF tersebut. Selain itu, ketika file dikonversi ke skala abu-abu, ukuran dokumen juga berkurang, tetapi hal ini juga dapat menyebabkan penurunan kualitas dokumen. Fitur ini saat ini didukung oleh fitur Pre-Flight dari Adobe Acrobat, tetapi ketika berbicara tentang otomatisasi Office, Aspose.PDF adalah solusi terbaik untuk menyediakan kemudahan manipulasi dokumen semacam itu. Untuk memenuhi kebutuhan ini, cuplikan kode berikut dapat digunakan.
import aspose.pdf as ap
# Muat file PDF sumber
document = ap.Document(input_pdf)
strategy = ap.RgbToDeviceGrayConversionStrategy()
for page in document.pages:
# Konversi gambar ruang warna RGB ke ruang warna skala abu-abu
strategy.convert(page)
# Simpan file hasil
document.save(output_pdf)
FlateDecode Compression
Aspose.PDF untuk Python via .NET menyediakan dukungan untuk kompresi FlateDecode untuk fungsionalitas Optimasi PDF. Cuplikan kode berikut di bawah ini menunjukkan cara menggunakan opsi dalam Optimasi untuk menyimpan gambar dengan kompresi FlateDecode:
import aspose.pdf as ap
# Buka Dokumen
doc = ap.Document(input_pdf)
# Inisialisasi OptimizationOptions
optimizationOptions = ap.optimization.OptimizationOptions()
# Untuk mengoptimalkan gambar menggunakan Kompresi FlateDecode, atur opsi optimasi ke Flate
optimizationOptions.image_compression_options.encoding = ap.optimization.ImageEncoding.FLATE
# Atur Opsi Optimasi
doc.optimize_resources(optimizationOptions)
# Simpan Dokumen
doc.save(output_pdf)