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
- Optimalizujte dokumenty PDF pro web pomocí C++
- Komprimujte a změňte velikost obrázků v souborech PDF pomocí C++
- Odstraňte vložená písma, nepoužívané proudy a propojte duplicitní proudy pomocí C++
- Odstraňte nebo sloučte anotace pomocí C++
- Odebrání polí formuláře ze souborů PDF pomocí C++
- Převeďte barevný prostor RGB na stupně šedi pro soubory PDF 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ů.
- Načtěte dokument PDF pomocí třídy Document.
- Optimalizujte dokument pomocí metody Document->Optimize().
- Uložte dokument PDF pomocí metody Document->Save(System::String outputFileName).
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.
- Načtěte soubor PDF pomocí třídy Document.
- Vytvořte instanci třídy OptimizationOptions.
- Nastavte možnosti komprese, kvality obrazu a rozlišení objektu OptimizationOptions.
- Použijte Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategie) metoda optimalizace zdrojů.
- Uložte soubor PDF pomocí metody Document->Save(System::String outputFileName).
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");
Odstraňte vložená písma, nepoužívané proudy a propojte duplicitní proudy pomocí C++
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.
- Načtěte soubor PDF pomocí třídy Document.
- Vytvořte instanci třídy OptimizationOptions.
- Buď zrušte vložení všech písem nebo podmnožiny písem.
- Propojte duplicitní streamy.
- Odstraňte nepoužívané proudy a objekty.
- Použijte Document->OptimizeResources(System::SharedPtrAspose::Pdf::Optimization::OptimizationOptions strategie) metoda optimalizace zdrojů.
- Uložte soubor PDF pomocí metody Document->Save(System::String outputFileName).
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.
- Vytvořte instanci třídy PdfAnnotationEditor.
- Načtěte zdrojový soubor PDF pomocí PdfAnnotationEditor->BindPdf (System::SharedPtrAspose::Pdf::Document srcDoc) metoda.
- Sloučit nebo odstranit anotace.
- Uložte soubor PDF pomocí metody PdfAnnotationEditor->Save(System::String destFile).
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.
- Načtěte soubor PDF pomocí třídy Document.
- Zkontrolujte existenci polí formuláře.
- Iterujte přes pole formuláře a vyrovnejte každé pole.
- Uložte soubor PDF pomocí metody Document->Save(System::String outputFileName).
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ů:
- Načtěte soubor PDF pomocí třídy Document.
- Vytvořte instanci třídy RgbToDeviceGrayConversionStrategy.
- Iterujte stránky souboru PDF.
- Použijte RgbToDeviceGrayConversionStrategy->Convert (System::SharedPtr page) pro převedení každé stránky na stupně šedi.
- Uložte soubor PDF pomocí metody Document->Save(System::String outputFileName).
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.