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
- Zoptymalizuj dokumenty PDF na potrzeby Internetu za pomocą języka C++
- Kompresuj i zmieniaj rozmiar obrazów w plikach PDF za pomocą C++
- Usuń osadzone czcionki, nieużywane strumienie i łącz zduplikowane strumienie za pomocą C++
- Usuń lub spłaszcz adnotacje za pomocą C++
- Usuwanie pól formularza z plików PDF za pomocą C++
- Konwertuj przestrzeń kolorów RGB na skalę szarości dla plików PDF 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.
- Załaduj dokument PDF za pomocą klasy Document.
- Zoptymalizuj dokument za pomocą metody Document->Optimize().
- Zapisz dokument PDF za pomocą metody Document->Save(System::String outputFileName).
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy OptimizationOptions.
- Ustaw opcje kompresji, jakości obrazu i rozdzielczości obiektu OptimizationOptions.
- Użyj [Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategia) 11 metoda optymalizacji zasobów.
- Zapisz plik PDF za pomocą metody Document->Save(System::String outputFileName).
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");
Usuń osadzone czcionki, nieużywane strumienie i łącz zduplikowane strumienie za pomocą C++
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy OptimizationOptions.
- Usuń osadzanie wszystkich czcionek lub podzbioru czcionek.
- Połącz zduplikowane strumienie.
- Usuń nieużywane strumienie i obiekty.
- Użyj [Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategia) 15 metoda optymalizacji zasobów.
- Zapisz plik PDF za pomocą metody Document->Save(System::String outputFileName).
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.
- Utwórz instancję klasy PdfAnnotationEditor.
- Załaduj źródłowy plik PDF za pomocą PdfAnnotationEditor->BindPdf (System::SharedPtrAspose::Pdf::Document srcDoc) metoda.
- Spłaszcz lub usuń adnotacje.
- Zapisz plik PDF za pomocą metody PdfAnnotationEditor->Save(System::String destFile).
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.
- Załaduj plik PDF przy użyciu klasy Document.
- Sprawdź, czy istnieją pola formularza.
- Przejrzyj pola formularza i spłaszcz każde pole.
- Zapisz plik PDF za pomocą metody Document->Save(System::String outputFileName).
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:
- Załaduj plik PDF przy użyciu klasy Document.
- Utwórz instancję klasy RgbToDeviceGrayConversionStrategy.
- Iteruj przez strony pliku PDF.
- Użyj [RgbToDeviceGrayConversionStrategy->Convert (System::SharedPtr page) 24 metoda konwersji każdej strony na skalę szarości.
- Zapisz plik PDF za pomocą metody Document->Save(System::String outputFileName).
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.