PDF to standardowy format udostępniania dokumentów w Internecie. Jego globalne wsparcie i spójny układ sprawiają, że jest to idealny wybór dla takich scenariuszy. Czasami jednak rozmiar plików PDF rośnie z powodu zawartości, takiej jak obrazy, rysunki itp. W takich scenariuszach można łatwo zoptymalizować lub skompresować pliki PDF, aby zmniejszyć ich rozmiar bez uszczerbku dla ich jakości. W tym celu w tym artykule nauczysz się różnych technik, których możesz użyć do kompresji i optymalizacji plików PDF w celu zmniejszenia ich rozmiaru za pomocą C++.

C++ API do kompresji i optymalizacji plików PDF

Aspose.PDF for C++ to biblioteka C++, która umożliwia tworzenie, odczytywanie i aktualizowanie dokumentów PDF. Możesz użyć tego interfejsu API do kompresji i optymalizacji dużych plików PDF w celu zmniejszenia ich rozmiaru przy jednoczesnym zachowaniu ich jakości. Możesz zainstalować API przez NuGet lub pobrać bezpośrednio z sekcji downloads.

PM> Install-Package Aspose.PDF.Cpp

Zoptymalizuj dokumenty PDF na potrzeby Internetu za pomocą języka C++

Jeśli chcesz wyświetlać dokumenty PDF w Internecie, ich optymalizacja poprawi szybkość ich ładowania, a tym samym poprawi komfort użytkowania. Aby zoptymalizować dokumenty PDF, wykonaj poniższe czynności.

Poniższy przykładowy kod pokazuje, jak zoptymalizować dokumenty PDF dla sieci Web przy użyciu języka C++.

// Otwórz dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Zoptymalizuj dokument PDF
pdfDocument->Optimize();

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

Kompresuj i zmieniaj rozmiar obrazów w plikach PDF za pomocą C++

Jeśli pliki PDF zawierają dużą liczbę obrazów, może to skutkować znacznymi rozmiarami plików. W takich plikach obrazy odgrywają znaczącą rolę w zwiększeniu ich rozmiaru. Kompresja i zmiana rozmiaru obrazów w tych plikach skutkowałaby zauważalnym zmniejszeniem ich rozmiarów. Poniżej przedstawiono kroki kompresji i zmiany rozmiaru obrazów w pliku PDF.

Poniższy przykładowy kod pokazuje, jak kompresować i zmieniać rozmiar obrazów w celu zmniejszenia rozmiaru pliku PDF przy użyciu języka C++.

// Otwórz dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Utwórz instancję klasy OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Kompresuj i zmieniaj rozmiar obrazów oraz ustawiaj ich jakość i rozdzielczość
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Zoptymalizuj zasoby w dokumencie
pdfDocument->OptimizeResources(options);

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

Aby jeszcze bardziej zmniejszyć rozmiar pliku, możesz także usunąć z niego osadzone czcionki. Istnieją dwie strategie usuwania osadzonych czcionek; po pierwsze usuwasz wszystkie osadzone czcionki, a po drugie usuwasz tylko podzbiór nieużywanych czcionek. Ponadto możesz także usuwać nieużywane strumienie i łączyć zduplikowane strumienie, aby zmniejszyć dodatkowy rozmiar. Poniżej przedstawiono kroki, aby zastosować wcześniej omówione zmiany w pliku PDF.

Poniższy przykładowy kod pokazuje, jak zmniejszyć rozmiar pliku PDF przez anulowanie osadzania czcionek i usuwanie nieużywanych strumieni i obiektów przy użyciu języka C++.

// Otwórz dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Utwórz instancję klasy OptimizationOptions
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Zarówno
// Usuń osadzanie wszystkich czcionek w pliku PDF
options->set_UnembedFonts(true);

// LUB
// Zachowaj osadzone czcionki tylko dla używanych znaków
options->set_SubsetFonts(true);

// Połącz zduplikowane strumienie
options->set_LinkDuplcateStreams(false);

// Usuń nieużywane strumienie
options->set_RemoveUnusedStreams(false);

// Usuń nieużywane przedmioty
options->set_RemoveUnusedObjects(false);

// Zoptymalizuj zasoby w dokumencie
pdfDocument->OptimizeResources(options);

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

Usuń lub spłaszcz adnotacje za pomocą C++

W plikach PDF może znajdować się wiele adnotacji, takich jak tekst, kształty itp., które zwiększają rozmiar pliku. Te adnotacje można usunąć, jeśli nie są już potrzebne, lub spłaszczyć, jeśli dalsze zmiany nie są potrzebne. Spowoduje to zmniejszenie rozmiaru pliku PDF. Poniżej przedstawiono kroki usuwania lub spłaszczania adnotacji z plików PDF.

Poniższy przykładowy kod pokazuje, jak usuwać lub spłaszczać adnotacje w plikach PDF przy użyciu języka C++.

// Utwórz instancję klasy PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Załaduj przykładowy plik PDF
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Zarówno
// Spłaszcz adnotacje
annotationEditor->FlatteningAnnotations();

// Lub
// Usuń adnotacje
//annotationEditor->DeleteAnnotations();

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

Usuwanie pól formularza z plików PDF za pomocą C++

Pola formularzy są wymagane, gdy trzeba zebrać dane. Jeśli gromadzenie danych nie jest już wymagane, można spłaszczyć pola formularza, aby zmniejszyć rozmiar pliku PDF. Poniżej przedstawiono kroki spłaszczania pól formularzy w plikach PDF.

Poniższy przykładowy kod pokazuje, jak spłaszczyć pola formularzy w plikach PDF przy użyciu języka C++.

// Otwórz dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Iteruj przez pola formularza
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Spłaszcz pole
		field->Flatten();
	}
}

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

Konwertuj przestrzeń kolorów RGB na skalę szarości dla plików PDF za pomocą C++

Pliki PDF z informacjami tekstowymi mogą być dobrze reprezentowane w przestrzeni kolorów w skali szarości, więc gdy konieczne jest zmniejszenie rozmiaru pliku, takie pliki PDF można przekonwertować na skalę szarości. Ponadto załóżmy, że priorytetem jest archiwizacja plików i maksymalne zmniejszenie ich rozmiaru. W takim przypadku pliki PDF z obrazami można również przekonwertować na skalę szarości, ponieważ głównym celem jest uzyskanie jak najmniejszych plików. Aby zmienić przestrzeń kolorów plików PDF z RGB na skalę szarości, wykonaj poniższe czynności:

Poniższy przykładowy kod pokazuje, jak przekonwertować przestrzeń kolorów pliku PDF z RGB na skalę szarości przy użyciu języka C++.

// Otwórz dokument 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);

	// Konwertuj przestrzeń kolorów każdej strony na skalę szarości
	strategy->Convert(page);
}

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

Uzyskaj bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

Celem tego artykułu było przyjrzenie się różnym sposobom kompresji i optymalizacji plików PDF w celu zmniejszenia ich rozmiarów. Najpierw przyjrzeliśmy się, jak zoptymalizować pliki PDF dla Internetu. Następnie zobaczyliśmy, jak kompresować i zmieniać rozmiar obrazów w plikach PDF. Ponadto nauczyliśmy się, jak usuwać osadzone czcionki i strumienie z plików PDF. Oprócz tego nauczyliśmy się spłaszczać adnotacje i pola formularzy oraz konwertować przestrzeń kolorów plików PDF na skalę szarości. Zbadaliśmy wszystkie te sposoby zmniejszenia rozmiaru plików PDF bez wpływu na ich jakość. Aspose.PDF for C++ zapewnia wiele dodatkowych funkcji do pracy z plikami PDF. Możesz szczegółowo zapoznać się z interfejsem API, odwiedzając oficjalną dokumentację. W przypadku jakichkolwiek pytań prosimy o kontakt z nami na naszym bezpłatnym forum pomocy technicznej.

Zobacz też