PDF je standardní formát pro sdílení dokumentů přes internet. Jeho globální podpora a konzistentní uspořádání z něj činí ideální volbu pro takové scénáře. Někdy však má velikost souborů PDF tendenci růst kvůli obsahu, jako jsou obrázky, kresby atd. V takových scénářích můžete soubory PDF snadno optimalizovat nebo komprimovat, abyste zmenšili jejich velikost, aniž byste snížili jejich kvalitu. Za tímto účelem vás tento článek naučí různé techniky, které můžete použít ke kompresi a optimalizaci souborů PDF za účelem zmenšení jejich velikosti pomocí C++.

C++ API pro kompresi a optimalizaci souborů PDF

Aspose.PDF for C++ je knihovna C++, která umožňuje vytvářet, číst a aktualizovat dokumenty PDF. Toto rozhraní API můžete použít ke kompresi a optimalizaci velkých souborů PDF, abyste zmenšili jejich velikost a zároveň zachovali jejich kvalitu. Rozhraní API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce stahování.

PM> Install-Package Aspose.PDF.Cpp

Optimalizujte dokumenty PDF pro web pomocí C++

Chcete-li zobrazit dokumenty PDF na webu, jejich optimalizací se zlepší rychlost jejich načítání, a tím i uživatelská zkušenost. Chcete-li optimalizovat dokumenty PDF, postupujte podle níže uvedených kroků.

Následující ukázkový kód ukazuje, jak optimalizovat dokumenty PDF pro web pomocí C++.

// Otevřete dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

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

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

Komprimujte a změňte velikost obrázků v souborech PDF pomocí C++

Pokud soubory PDF obsahují velké množství obrázků, může to mít za následek značné velikosti souborů. V takových souborech hrají obrázky významnou roli při zvětšování jejich velikosti. Komprese a změna velikosti obrázků v těchto souborech by vedla ke značnému zmenšení jejich velikosti. Níže jsou uvedeny kroky ke kompresi a změně velikosti obrázků v souboru PDF.

Následující ukázkový kód ukazuje, jak komprimovat a měnit velikost obrázků, aby se zmenšila velikost souboru PDF pomocí C++.

// Otevřete dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Vytvořte instanci třídy OptimizationOptions třídy
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Komprimujte a změňte velikost obrázků a nastavte jejich kvalitu a rozlišení
options->get_ImageCompressionOptions()->set_CompressImages(true);
options->get_ImageCompressionOptions()->set_ImageQuality(10);
options->get_ImageCompressionOptions()->set_MaxResolution(150);
options->get_ImageCompressionOptions()->set_ResizeImages(true);

// Optimalizujte zdroje v dokumentu
pdfDocument->OptimizeResources(options);

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

Chcete-li dále zmenšit velikost souboru, můžete také odstranit vložená písma ze souboru. Existují dvě strategie pro odstranění vložených písem; první je, že odstraníte všechna vložená písma, a druhá je, že odstraníte pouze podmnožinu nepoužívaných písem. Kromě toho můžete také odstranit nepoužívané streamy a propojit duplicitní streamy, abyste snížili další velikost. Následují kroky k použití dříve diskutovaných změn na soubor PDF.

Následující ukázkový kód ukazuje, jak zmenšit velikost souboru PDF zrušením vkládání písem a odstraněním nepoužívaných proudů a objektů pomocí C++.

// Otevřete dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Sample 4.pdf");

// Vytvořte instanci třídy OptimizationOptions třídy
System::SharedPtr<Aspose::Pdf::Optimization::OptimizationOptions> options = MakeObject<Aspose::Pdf::Optimization::OptimizationOptions>();

// Buď
// Zrušte vložení všech písem v PDF
options->set_UnembedFonts(true);

// NEBO
// Ponechejte vložená písma pouze pro použité znaky
options->set_SubsetFonts(true);

// Propojte duplicitní streamy
options->set_LinkDuplcateStreams(false);

// Odstraňte nepoužívané streamy
options->set_RemoveUnusedStreams(false);

// Odstraňte nepoužívané předměty
options->set_RemoveUnusedObjects(false);

// Optimalizujte zdroje v dokumentu
pdfDocument->OptimizeResources(options);

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

Odstraňte nebo sloučte anotace pomocí C++

V souborech PDF může být více anotací, jako je text, tvary atd., které zvětšují velikost souboru. Tyto anotace lze odstranit, pokud již nejsou vyžadovány, nebo sloučit, pokud nejsou potřeba žádné další změny. Tím se zmenší velikost souboru PDF. Následují kroky k odstranění nebo sloučení anotací ze souborů PDF.

Následující ukázkový kód ukazuje, jak odstranit nebo sloučit anotace v souborech PDF pomocí C++.

// Vytvořte instanci třídy PdfAnnotationEditor
System::SharedPtr<Aspose::Pdf::Facades::PdfAnnotationEditor> annotationEditor = System::MakeObject<Aspose::Pdf::Facades::PdfAnnotationEditor>();

// Načtěte ukázkový soubor PDF
annotationEditor->BindPdf(u"SourceDirectory\\PDF\\AnnotationSample.pdf");

// Buď
// Zploštit anotace
annotationEditor->FlatteningAnnotations();

// Nebo
// Smazat anotace
//annotationEditor->DeleteAnnotations();

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

Odebrání polí formuláře ze souborů PDF pomocí C++

Pole formuláře jsou povinná, když potřebujete shromáždit data. Pokud již není vyžadováno shromažďování dat, můžete pole formuláře sloučit a zmenšit tak velikost souboru PDF. Následují kroky ke sloučení polí formuláře v souborech PDF.

Následující ukázkový kód ukazuje, jak sloučit pole formuláře v souborech PDF pomocí C++.

// Otevřete dokument PDF
auto pdfDocument = MakeObject<Document>(u"SourceDirectory\\PDF\\Fillable_PDF_Form.pdf");

if (pdfDocument->get_Form()->get_Fields()->get_Length() > 0)
{
	// Iterujte přes pole formuláře
	for (System::SharedPtr<Field> field : pdfDocument->get_Form()->get_Fields())
	{
		// Vyrovnat pole
		field->Flatten();
	}
}

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

Převeďte barevný prostor RGB na stupně šedi pro soubory PDF pomocí C++

Soubory PDF s textovými informacemi lze dobře znázornit v barevném prostoru ve stupních šedi, takže když je zmenšení velikosti souboru zásadní, lze takové soubory PDF převést do odstínů šedi. Dále předpokládejme, že prioritou je archivovat soubory a co nejvíce zmenšit velikost. V takovém případě lze soubory PDF s obrázky také převést do odstínů šedi, protože primárním cílem je vytvořit soubory co nejmenší. Chcete-li změnit barevný prostor souborů PDF z RGB na stupně šedi, postupujte podle následujících kroků:

Následující ukázkový kód ukazuje, jak převést barevný prostor souboru PDF z RGB na stupně šedi pomocí C++.

// Otevřete 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);

	// Převeďte barevný prostor každé stránky na stupně šedi
	strategy->Convert(page);
}

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

Získejte bezplatnou licenci

Rozhraní API můžete vyzkoušet bez omezení hodnocení tím, že požádáte o bezplatnou dočasnou licenci.

Závěr

Cílem tohoto článku bylo podívat se na různé způsoby komprimace a optimalizace souborů PDF, aby se zmenšila jejich velikost. Nejprve jsme se podívali na to, jak optimalizovat soubory PDF pro web. Pak jsme viděli, jak komprimovat a měnit velikost obrázků v souborech PDF. Dále jsme se naučili, jak odstranit vložená písma a proudy ze souborů PDF. Kromě toho jsme se naučili, jak sloučit anotace a pole formulářů a převést barevný prostor souborů PDF na stupně šedi. Prozkoumali jsme všechny tyto způsoby, jak zmenšit velikost souborů PDF bez ovlivnění jejich kvality. Aspose.PDF for C++ poskytuje mnoho dalších funkcí pro práci se soubory PDF. Rozhraní API můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také