PDF ist ein Standardformat für die gemeinsame Nutzung von Dokumenten über das Internet. Seine globale Unterstützung und sein konsistentes Layout machen es zur idealen Wahl für solche Szenarien. Manchmal wächst die Größe von PDF Dateien jedoch aufgrund von Inhalten wie Bildern, Zeichnungen usw. In solchen Szenarien können Sie PDF Dateien einfach optimieren oder komprimieren, um ihre Größe zu reduzieren, ohne ihre Qualität zu beeinträchtigen. Zu diesem Zweck lernen Sie in diesem Artikel verschiedene Techniken kennen, mit denen Sie PDF Dateien komprimieren und optimieren können, um ihre Größe mit C++ zu reduzieren.

C++-API zum Komprimieren und Optimieren von PDF Dateien

Aspose.PDF for C++ ist eine C++ Bibliothek, mit der Sie PDF Dokumente erstellen, lesen und aktualisieren können. Sie können diese API verwenden, um große PDF Dateien zu komprimieren und zu optimieren, um ihre Größe zu reduzieren und gleichzeitig ihre Qualität beizubehalten. Sie können die API entweder über NuGet installieren oder direkt aus dem Abschnitt downloads herunterladen.

PM> Install-Package Aspose.PDF.Cpp

Optimieren Sie PDF Dokumente für das Web mit C++

Wenn Sie die PDF Dokumente im Web anzeigen möchten, verbessert eine Optimierung deren Ladegeschwindigkeit und damit das Benutzererlebnis. Um PDF Dokumente zu optimieren, gehen Sie bitte wie folgt vor.

Der folgende Beispielcode zeigt, wie PDF Dokumente mit C++ für das Web optimiert werden.

// Öffnen Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Optimieren Sie das PDF Dokument
pdfDocument->Optimize();

// Speichern Sie das PDF Dokument
pdfDocument->Save(u"OutputDirectory\\Optimized_output.pdf");

Bilder in PDF Dateien mit C++ komprimieren und skalieren

Wenn PDF Dateien eine große Anzahl von Bildern enthalten, kann dies zu erheblichen Dateigrößen führen. In solchen Dateien spielen Bilder eine wichtige Rolle bei der Erhöhung ihrer Größe. Das Komprimieren und Ändern der Größe von Bildern in diesen Dateien würde zu einer merklichen Reduzierung ihrer Größe führen. Im Folgenden finden Sie die Schritte zum Komprimieren und Ändern der Größe von Bildern in einer PDF Datei.

Der folgende Beispielcode zeigt, wie Bilder komprimiert und in der Größe geändert werden, um die PDF Dateigröße mit C++ zu reduzieren.

// Öffnen Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Erstellen Sie eine Instanz der OptimizationOptions Klasse
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Komprimieren und skalieren Sie Bilder und stellen Sie deren Qualität und Auflösung ein
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Ressourcen im Dokument optimieren
pdfDocument->OptimizeResources(options);

// Speichern Sie das PDF Dokument
pdfDocument->Save(u"OutputDirectory\\Compressed_PDF_With_Images.pdf");

Um die Dateigröße weiter zu reduzieren, können Sie auch eingebettete Schriftarten aus der Datei entfernen. Es gibt zwei Strategien zum Entfernen eingebetteter Schriftarten; Die erste besteht darin, dass Sie alle eingebetteten Schriftarten entfernen, und die zweite besteht darin, dass Sie nur die Teilmenge nicht verwendeter Schriftarten entfernen. Darüber hinaus können Sie auch ungenutzte Streams entfernen und doppelte Streams verknüpfen, um zusätzliche Größe zu reduzieren. Im Folgenden finden Sie die Schritte zum Anwenden der zuvor besprochenen Änderungen auf eine PDF Datei.

Der folgende Beispielcode zeigt, wie Sie die PDF Dateigröße reduzieren, indem Sie die Einbettung von Schriftarten aufheben und nicht verwendete Streams und Objekte mit C++ entfernen.

// Öffnen Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Erstellen Sie eine Instanz der OptimizationOptions Klasse
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Entweder
// Heben Sie die Einbettung aller Schriftarten in PDF auf
options->set_UnembedFonts(true);

// ODER
// Behalten Sie eingebettete Schriftarten nur für verwendete Zeichen bei
options->set_SubsetFonts(true);

// Doppelte Streams verknüpfen
options->set_LinkDuplcateStreams(false);

// Entfernen Sie ungenutzte Streams
options->set_RemoveUnusedStreams(false);

// Entfernen Sie unbenutzte Objekte
options->set_RemoveUnusedObjects(false);

// Ressourcen im Dokument optimieren
pdfDocument->OptimizeResources(options);

// Speichern Sie das PDF Dokument
pdfDocument->Save(u"OutputDirectory\\Remove_Embedded_Fonts_Output.pdf");

Anmerkungen mit C++ entfernen oder reduzieren

PDF Dateien können mehrere Anmerkungen wie Text, Formen usw. enthalten, die die Dateigröße erhöhen. Diese Anmerkungen können entfernt werden, wenn sie nicht mehr benötigt werden, oder reduziert werden, wenn keine weiteren Änderungen erforderlich sind. Dadurch wird die Größe der PDF Datei reduziert. Im Folgenden finden Sie die Schritte zum Entfernen oder Reduzieren von Anmerkungen aus PDF Dateien.

Der folgende Beispielcode zeigt, wie Anmerkungen in PDF Dateien mit C++ gelöscht oder vereinfacht werden.

// Erstellen Sie eine Instanz der PdfAnnotationEditor Klasse
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Laden Sie die Beispiel-PDF Datei
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Entweder
// Anmerkungen glätten
annotationEditor->FlatteningAnnotations();

// Oder
// Anmerkungen löschen
//annotationEditor->DeleteAnnotations();

// Speichern Sie das PDF Dokument
annotationEditor->Save(u"OutputDirectory\\Remove_Annotations_Output.pdf");

Formularfelder aus PDF Dateien mit C++ entfernen

Formularfelder sind erforderlich, wenn Sie Daten erfassen müssen. Wenn die Datenerfassung nicht mehr erforderlich ist, können Sie die Formularfelder reduzieren, um die PDF Dateigröße zu reduzieren. Im Folgenden finden Sie die Schritte zum Reduzieren von Formularfeldern in PDF Dateien.

Der folgende Beispielcode zeigt, wie Formularfelder in PDF Dateien mit C++ vereinfacht werden.

// Öffnen Sie das PDF Dokument
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Iterieren Sie durch die Formularfelder
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Feld glätten
		field->Flatten();
	}
}

// Speichern Sie das PDF Dokument
pdfDocument->Save(u"OutputDirectory\\Flatten_Form_Fields.pdf");

Konvertieren Sie den RGB-Farbraum in Graustufen für PDF Dateien mit C++

PDF Dateien mit Textinformationen können gut im Graustufen-Farbraum dargestellt werden, wenn also eine Reduzierung der Dateigröße unerlässlich ist, können solche PDF Dateien in Graustufen konvertiert werden. Nehmen Sie außerdem an, dass die Priorität darin besteht, Dateien zu archivieren und die Größe so weit wie möglich zu reduzieren. In diesem Fall können auch PDF Dateien mit Bildern in Graustufen konvertiert werden, da das primäre Ziel darin besteht, die Dateien so klein wie möglich zu machen. Um den Farbraum von PDF Dateien von RGB in Graustufen zu ändern, gehen Sie wie folgt vor:

Der folgende Beispielcode zeigt, wie der Farbraum einer PDF Datei mit C++ von RGB in Graustufen konvertiert wird.

// Öffnen Sie das PDF Dokument
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);

	// Konvertieren Sie den Farbraum jeder Seite in Graustufen
	strategy->Convert(page);
}

// Speichern Sie das PDF Dokument
pdfDocument->Save(u"OutputDirectory\\Grayscale_PDF_Output.pdf");

Holen Sie sich eine kostenlose Lizenz

Sie können die API ohne Evaluierungseinschränkungen testen, indem Sie eine kostenlose temporäre Lizenz anfordern.

Fazit

Das Ziel dieses Artikels war es, verschiedene Möglichkeiten zum Komprimieren und Optimieren von PDF Dateien zu untersuchen, um ihre Größe zu reduzieren. Zuerst haben wir uns angesehen, wie man PDF Dateien für das Web optimiert. Dann haben wir gesehen, wie man Bilder in PDF Dateien komprimiert und in der Größe ändert. Außerdem haben wir gelernt, wie man eingebettete Schriften und Streams aus PDF Dateien entfernt. Darüber hinaus haben wir gelernt, Anmerkungen und Formularfelder zu reduzieren und den Farbraum von PDF Dateien in Graustufen umzuwandeln. Wir haben all diese Möglichkeiten untersucht, um die Größe der PDF Dateien zu reduzieren, ohne ihre Qualität zu beeinträchtigen. Aspose.PDF for C++ bietet viele zusätzliche Funktionen für die Arbeit mit PDF Dateien. Sie können die API im Detail erkunden, indem Sie die offizielle Dokumentation besuchen. Bei Fragen können Sie sich gerne in unserem kostenlosen Support-Forum an uns wenden.

Siehe auch