PDF adalah format standar untuk berbagi dokumen melalui internet. Dukungan global dan tata letak yang konsisten menjadikannya pilihan ideal untuk skenario semacam itu. Namun, terkadang ukuran file PDF cenderung bertambah karena konten seperti gambar, gambar, dll. Dalam skenario seperti itu, Anda dapat dengan mudah mengoptimalkan atau mengompres file PDF untuk memperkecil ukurannya tanpa mengurangi kualitasnya. Untuk itu, artikel ini akan mengajarkan Anda berbagai teknik yang dapat Anda gunakan untuk mengompresi dan mengoptimalkan file PDF untuk memperkecil ukurannya menggunakan C++.

C++ API untuk Mengompresi dan Mengoptimalkan File PDF

Aspose.PDF for C++ adalah pustaka C++ yang memungkinkan Anda membuat, membaca, dan memperbarui dokumen PDF. Anda dapat menggunakan API ini untuk mengompresi dan mengoptimalkan file PDF berukuran besar untuk mengurangi ukurannya sambil tetap mempertahankan kualitasnya. Anda dapat menginstal API melalui NuGet atau mengunduhnya langsung dari bagian unduhan.

PM> Install-Package Aspose.PDF.Cpp

Optimalkan Dokumen PDF untuk Web menggunakan C++

Jika Anda ingin menampilkan Dokumen PDF di web, mengoptimalkannya akan meningkatkan kecepatan pemuatannya dan dengan demikian meningkatkan pengalaman pengguna. Untuk mengoptimalkan dokumen PDF, ikuti langkah-langkah yang diberikan di bawah ini.

Kode contoh berikut menunjukkan cara mengoptimalkan dokumen PDF untuk web menggunakan C++.

// Buka dokumen PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Optimalkan dokumen PDF
pdfDocument->Optimize();

// Simpan dokumen PDF
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

Kompres dan Ubah Ukuran Gambar dalam File PDF menggunakan C++

Jika file PDF berisi banyak gambar, itu dapat menghasilkan ukuran file yang besar. Dalam file seperti itu, gambar memainkan peran penting dalam meningkatkan ukurannya. Mengompresi dan mengubah ukuran gambar dalam file-file ini akan menghasilkan pengurangan ukuran yang nyata. Berikut ini adalah langkah-langkah untuk mengompres dan mengubah ukuran gambar dalam file PDF.

Kode contoh berikut menunjukkan cara mengompres dan mengubah ukuran gambar untuk mengurangi ukuran file PDF menggunakan C++.

// Buka dokumen PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Buat instance dari kelas OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Kompres dan ubah ukuran gambar serta atur kualitas dan resolusinya
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Optimalkan sumber daya dalam dokumen
pdfDocument->OptimizeResources(options);

// Simpan dokumen PDF
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

Untuk lebih mengurangi ukuran file, Anda juga dapat menghapus font yang disematkan dari file. Ada dua strategi untuk menghapus font tersemat; yang pertama adalah Anda menghapus semua font yang disematkan, dan yang kedua adalah Anda hanya menghapus sebagian dari font yang tidak digunakan. Selain itu, Anda juga dapat menghapus aliran yang tidak digunakan dan menautkan aliran duplikat untuk mengurangi ukuran tambahan. Berikut ini adalah langkah-langkah untuk menerapkan perubahan yang telah dibahas sebelumnya ke file PDF.

Kode contoh berikut menunjukkan cara mengurangi ukuran file PDF dengan menghapus penyematan font dan menghapus aliran dan objek yang tidak digunakan menggunakan C++.

// Buka dokumen PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Buat instance dari kelas OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Salah satu
// Batalkan penyematan semua font dalam PDF
options->set_UnembedFonts(true);

// ATAU
// Hanya simpan font tersemat untuk karakter yang digunakan
options->set_SubsetFonts(true);

// Tautkan aliran duplikat
options->set_LinkDuplcateStreams(false);

// Hapus aliran yang tidak digunakan
options->set_RemoveUnusedStreams(false);

// Hapus objek yang tidak digunakan
options->set_RemoveUnusedObjects(false);

// Optimalkan sumber daya dalam dokumen
pdfDocument->OptimizeResources(options);

// Simpan dokumen PDF
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

Hapus atau Ratakan Anotasi menggunakan C++

Mungkin ada beberapa anotasi dalam file PDF seperti teks, bentuk, dll., yang meningkatkan ukuran file. Anotasi ini dapat dihapus jika tidak diperlukan lagi atau diratakan jika tidak diperlukan perubahan lebih lanjut. Melakukan hal ini akan mengurangi ukuran file PDF. Berikut ini adalah langkah-langkah untuk menghapus atau meratakan anotasi dari file PDF.

Kode contoh berikut menunjukkan cara menghapus atau meratakan anotasi dalam file PDF menggunakan C++.

// Buat instance kelas PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Muat file PDF sampel
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Salah satu
// Meratakan anotasi
annotationEditor->FlatteningAnnotations();

// Atau
// Hapus Anotasi
//annotationEditor->DeleteAnnotations();

// Simpan dokumen PDF
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

Menghapus Kolom Formulir dari File PDF menggunakan C++

Bidang formulir diperlukan saat Anda perlu mengumpulkan data. Jika pengumpulan data tidak lagi diperlukan, Anda dapat meratakan bidang formulir untuk mengurangi ukuran file PDF. Berikut ini adalah langkah-langkah untuk meratakan form field pada file PDF.

Kode contoh berikut menunjukkan cara meratakan bidang formulir dalam file PDF menggunakan C++.

// Buka dokumen PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Ulangi melalui bidang formulir
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Ratakan bidang
		field->Flatten();
	}
}

// Simpan dokumen PDF
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

Ubah Ruang Warna RGB menjadi Skala Abu-abu untuk File PDF menggunakan C++

File PDF dengan informasi tekstual dapat direpresentasikan dengan baik dalam ruang warna skala abu-abu, jadi ketika mengurangi ukuran file sangat penting, file PDF tersebut dapat diubah menjadi skala abu-abu. Selanjutnya, misalkan prioritasnya adalah mengarsipkan file dan memperkecil ukurannya sebanyak mungkin. Dalam hal ini, file PDF dengan gambar juga dapat diubah menjadi skala abu-abu karena tujuan utamanya adalah membuat file sekecil mungkin. Untuk mengubah ruang warna file PDF dari RGB ke skala abu-abu, ikuti langkah-langkah di bawah ini:

Kode contoh berikut menunjukkan cara mengonversi ruang warna file PDF dari RGB ke skala abu-abu menggunakan C++.

// Buka dokumen PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 1.pdf");

System::SharedPtr<RgbToDeviceGrayConversionStrategy> strategy = MakeObject<RgbToDeviceGrayConversionStrategy>();

for (int idxPage = 1; idxPage <= pdfDocument->get_Pages()->get_Count(); idxPage++) {
	System::SharedPtr<Page> page = pdfDocument->get_Pages()->idx_get(idxPage);

	// Ubah ruang warna setiap halaman menjadi Grayscale
	strategy->Convert(page);
}

// Simpan dokumen PDF
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

Dapatkan Lisensi Gratis

Anda dapat mencoba API tanpa batasan evaluasi dengan meminta lisensi sementara gratis.

Kesimpulan

Tujuan artikel ini adalah untuk melihat berbagai cara mengompres dan mengoptimalkan file PDF untuk mengurangi ukurannya. Pertama, kami melihat cara mengoptimalkan file PDF untuk web. Kemudian kami melihat cara mengompres dan mengubah ukuran gambar dalam file PDF. Selain itu, kami telah mempelajari cara menghapus font dan aliran yang disematkan dari file PDF. Selain itu, kami belajar cara meratakan anotasi dan bidang formulir, serta mengubah ruang warna file PDF menjadi skala abu-abu. Kami menjelajahi semua cara ini untuk mengurangi ukuran file PDF tanpa memengaruhi kualitasnya. Aspose.PDF for C++ menyediakan banyak fitur tambahan untuk bekerja dengan file PDF. Anda dapat menjelajahi API secara mendetail dengan mengunjungi dokumentasi resmi. Jika ada pertanyaan, jangan ragu untuk menghubungi kami di [forum dukungan gratis] kami28.

Lihat juga