PDF là định dạng tiêu chuẩn để chia sẻ tài liệu qua internet. Hỗ trợ toàn cầu và bố cục nhất quán của nó làm cho nó trở thành một lựa chọn lý tưởng cho các tình huống như vậy. Tuy nhiên, đôi khi, kích thước của tệp PDF có xu hướng tăng lên do nội dung như hình ảnh, bản vẽ, v.v. Trong những trường hợp như vậy, bạn có thể dễ dàng tối ưu hóa hoặc nén tệp PDF để giảm kích thước của chúng mà không làm giảm chất lượng của chúng. Để đạt được điều đó, bài viết này sẽ hướng dẫn bạn các kỹ thuật khác nhau mà bạn có thể sử dụng để nén và tối ưu hóa các tệp PDF nhằm giảm kích thước của chúng bằng C ++.

API C ++ để nén và tối ưu hóa tệp PDF

Aspose.PDF for C ++ là thư viện C ++ cho phép bạn tạo, đọc và cập nhật tài liệu PDF. Bạn có thể sử dụng API này để nén và tối ưu hóa các tệp PDF lớn nhằm giảm kích thước của chúng trong khi vẫn giữ được chất lượng của chúng. Bạn có thể cài đặt API thông qua NuGet hoặc tải xuống trực tiếp từ phần tải xuống.

PM> Install-Package Aspose.PDF.Cpp

Tối ưu hóa Tài liệu PDF cho Web bằng C ++

Nếu bạn muốn hiển thị Tài liệu PDF trên web, việc tối ưu hóa chúng sẽ cải thiện tốc độ tải và do đó nâng cao trải nghiệm người dùng. Để tối ưu hóa tài liệu PDF, vui lòng làm theo các bước dưới đây.

Đoạn mã mẫu sau đây cho thấy cách tối ưu hóa tài liệu PDF cho web bằng C ++.

// Mở tài liệu PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Tối ưu hóa tài liệu PDF
pdfDocument->Optimize();

// Lưu tài liệu PDF
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

Nén và thay đổi kích thước hình ảnh trong tệp PDF bằng C ++

Nếu tệp PDF chứa một số lượng lớn hình ảnh, điều đó có thể dẫn đến kích thước tệp đáng kể. Trong các tệp như vậy, hình ảnh đóng một vai trò quan trọng trong việc tăng kích thước của chúng. Nén và thay đổi kích thước hình ảnh trong các tệp này sẽ dẫn đến việc giảm kích thước đáng kể của chúng. Sau đây là các bước để nén và thay đổi kích thước hình ảnh trong một tệp PDF.

Đoạn mã mẫu sau đây trình bày cách nén và thay đổi kích thước hình ảnh để giảm kích thước tệp PDF bằng C ++.

// Mở tài liệu PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Tạo một phiên bản của lớp OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Nén và thay đổi kích thước hình ảnh cũng như đặt chất lượng và độ phân giải của chúng
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Tối ưu hóa tài nguyên trong tài liệu
pdfDocument->OptimizeResources(options);

// Lưu tài liệu PDF
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

Để giảm thêm kích thước tệp, bạn cũng có thể xóa phông chữ nhúng khỏi tệp. Có hai chiến lược để xóa phông chữ nhúng; đầu tiên là bạn xóa tất cả các phông chữ nhúng và thứ hai là bạn chỉ xóa tập hợp con các phông chữ không sử dụng. Hơn nữa, bạn cũng có thể xóa các luồng không sử dụng và liên kết các luồng trùng lặp để giảm kích thước bổ sung. Sau đây là các bước để áp dụng các thay đổi đã thảo luận trước đó cho tệp PDF.

Đoạn mã mẫu sau đây cho thấy cách giảm kích thước tệp PDF bằng cách hủy kết hợp các phông chữ và xóa các luồng và đối tượng không sử dụng bằng C ++.

// Mở tài liệu PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Tạo một phiên bản của lớp OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Một trong hai
// Mở rộng tất cả các phông chữ trong PDF
options->set_UnembedFonts(true);

// HOẶC
// Chỉ giữ lại phông chữ nhúng cho các ký tự đã sử dụng
options->set_SubsetFonts(true);

// Liên kết các luồng trùng lặp
options->set_LinkDuplcateStreams(false);

// Xóa các luồng không sử dụng
options->set_RemoveUnusedStreams(false);

// Loại bỏ các đối tượng không sử dụng
options->set_RemoveUnusedObjects(false);

// Tối ưu hóa tài nguyên trong tài liệu
pdfDocument->OptimizeResources(options);

// Lưu tài liệu PDF
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

Xóa hoặc làm phẳng chú thích bằng C ++

Có thể có nhiều chú thích trong tệp PDF như văn bản, hình dạng, v.v., làm tăng kích thước tệp. Các chú thích này có thể bị xóa nếu chúng không còn được yêu cầu hoặc làm phẳng nếu không cần thay đổi thêm. Làm điều này sẽ giảm kích thước của tệp PDF. Sau đây là các bước để xóa hoặc làm phẳng các chú thích khỏi tệp PDF.

Đoạn mã mẫu sau đây cho thấy cách xóa hoặc làm phẳng các chú thích trong tệp PDF bằng C ++.

// Tạo một phiên bản của lớp PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Tải tệp PDF mẫu
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Một trong hai
// Làm phẳng các chú thích
annotationEditor->FlatteningAnnotations();

// Hoặc
// Xóa chú thích
//annotationEditor-> DeleteAnnotations();

// Lưu tài liệu PDF
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

Xóa trường biểu mẫu khỏi tệp PDF bằng C ++

Các trường biểu mẫu là bắt buộc khi bạn cần thu thập dữ liệu. Nếu không cần thu thập dữ liệu nữa, bạn có thể làm phẳng các trường biểu mẫu để giảm kích thước tệp PDF. Sau đây là các bước để làm phẳng các trường biểu mẫu trong tệp PDF.

Mã mẫu sau đây cho thấy cách làm phẳng các trường biểu mẫu trong tệp PDF bằng C ++.

// Mở tài liệu PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Lặp lại thông qua các trường biểu mẫu
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Làm phẳng lĩnh vực
		field->Flatten();
	}
}

// Lưu tài liệu PDF
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

Chuyển đổi Không gian màu RGB sang Thang độ xám cho các tệp PDF bằng C ++

Các tệp PDF với thông tin văn bản có thể được trình bày tốt trong không gian màu thang độ xám, vì vậy khi giảm kích thước tệp là điều cần thiết, các tệp PDF như vậy có thể được chuyển đổi sang thang độ xám. Hơn nữa, giả sử ưu tiên là lưu trữ tệp và giảm kích thước càng nhiều càng tốt. Trong trường hợp đó, các tệp PDF có hình ảnh cũng có thể được chuyển đổi sang thang độ xám vì mục tiêu chính là làm cho tệp càng nhỏ càng tốt. Để thay đổi không gian màu của tệp PDF từ RGB sang thang độ xám, hãy làm theo các bước dưới đây:

Mã mẫu sau đây cho thấy cách chuyển đổi không gian màu của tệp PDF từ RGB sang thang độ xám bằng C ++.

// Mở tài liệu 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);

	// Chuyển đổi không gian màu của mỗi trang thành Thang độ xám
	strategy->Convert(page);
}

// Lưu tài liệu PDF
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

Nhận giấy phép miễn phí

Bạn có thể dùng thử API mà không có giới hạn đánh giá bằng cách yêu cầu giấy phép tạm thời miễn phí.

Sự kết luận

Mục tiêu của bài viết này là xem xét các cách khác nhau để nén và tối ưu hóa các tệp PDF để giảm kích thước của chúng. Đầu tiên, chúng tôi đã xem xét cách tối ưu hóa các tệp PDF cho web. Sau đó, chúng tôi đã xem cách nén và thay đổi kích thước hình ảnh trong tệp PDF. Hơn nữa, chúng tôi đã học cách xóa phông chữ và luồng nhúng khỏi tệp PDF. Ngoài ra, chúng tôi đã học cách làm phẳng các chú thích và biểu mẫu các trường, đồng thời chuyển đổi không gian màu của tệp PDF sang thang độ xám. Chúng tôi đã khám phá tất cả những cách này để giảm kích thước tệp PDF mà không ảnh hưởng đến chất lượng của chúng. Aspose.PDF cho C ++ cung cấp nhiều tính năng bổ sung để làm việc với các tệp PDF. Bạn có thể khám phá API chi tiết bằng cách truy cập tài liệu chính thức. Trong trường hợp có bất kỳ câu hỏi nào, vui lòng liên hệ với chúng tôi tại diễn đàn hỗ trợ miễn phí của chúng tôi.

Xem thêm