Převod PPT a PPTX do PDF v C++ [Zahrnuty pokročilé funkce]
Přehled
Převod prezentací PowerPoint (PPT, PPTX, ODP atd.) do formátu PDF v C++ nabízí několik výhod, včetně kompatibility napříč různými zařízeními a zachování rozložení a formátování vaší prezentace. Tento průvodce ukazuje, jak převést prezentace do PDF dokumentů, používat různé možnosti pro kontrolu kvality obrázků, zahrnout skryté snímky, chránit PDF soubory heslem, detekovat náhrady písem, vybrat konkrétní snímky pro převod a použít normy souladu na výstupní dokumenty.
Převody PowerPoint do PDF
Pomocí Aspose.Slides můžete převést prezentace v následujících formátech do PDF:
- PPT
- PPTX
- ODP
Pro převod prezentace do PDF předáte název souboru jako argument třídě Presentation a poté prezentaci uložíte jako PDF pomocí metody Save. Třída Presentation vystavuje metodu Save, která se typicky používá k převodu prezentace do PDF.
Note
Aspose.Slides pro C++ vkládá informace o svém API a číslo verze do výstupních dokumentů. Například při převodu prezentace do PDF Aspose.Slides naplní pole Application hodnotou “Aspose.Slides” a pole PDF Producer hodnotou ve formátu “Aspose.Slides v XX.XX”. Poznámka že nemůžete instruovat Aspose.Slides, aby tuto informaci ve výstupních dokumentech změnil nebo odstranil.Aspose.Slides umožňuje převést:
- Celé prezentace do PDF
- Konkrétní snímky z prezentace do PDF
Aspose.Slides exportuje prezentace do PDF, čímž zajišťuje, že výsledná PDF úzce odpovídají originálním prezentacím. Prvky a atributy jsou během převodu vykresleny přesně, včetně:
- Obrázky
- Textová pole a tvary
- Formátování textu
- Formátování odstavců
- Hyperlinky
- Záhlaví a zápatí
- Odrážky
- Tabulky
Převod PowerPoint do PDF
Standardní proces převodu PowerPoint do PDF používá výchozí možnosti. V tomto případě Aspose.Slides se snaží převést poskytnutou prezentaci do PDF pomocí optimálních nastavení na maximální úrovni kvality.
Následující příklad načte prezentaci a uloží všechny viditelné snímky do PDF pomocí výchozích nastavení exportu.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"PowerPoint.ppt");
presentation->Save(u"PPT-to-PDF.pdf", SaveFormat::Pdf);
presentation->Dispose();
Note
Aspose nabízí zdarma online PowerPoint do PDF převodník, který demonstruje proces převodu prezentace do PDF. Můžete spustit test s tímto převodníkem pro živou implementaci popsaného postupu.Převod PowerPoint do PDF s možnostmi
Aspose.Slides poskytuje vlastní možnosti — vlastnosti třídy PdfOptions, které vám umožní přizpůsobit výsledné PDF, uzamknout PDF heslem nebo určit, jak má proces převodu probíhat.
Převod PowerPoint do PDF s vlastními možnostmi
Pomocí vlastních možností převodu můžete definovat preferované nastavení kvality rastrových obrázků, určit, jak mají být zpracovány metafily, nastavit úroveň komprese textu, konfigurovat DPI pro obrázky a další.
Následující příklad exportuje prezentaci do PDF 1.5 s JPEG kvalitou nastavenou na 90, rozlišením obrázku 300 DPI, metafily uloženými jako PNG a Flate kompresí textu.
#include <DOM/Presentation.h>
#include <Export/PdfCompliance.h>
#include <Export/PdfOptions.h>
#include <Export/PdfTextCompression.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_JpegQuality(90);
pdfOptions->set_SufficientResolution(300);
pdfOptions->set_SaveMetafilesAsPng(true);
pdfOptions->set_TextCompression(PdfTextCompression::Flate);
pdfOptions->set_Compliance(PdfCompliance::Pdf15);
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");
presentation->Save(u"PowerPoint-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Automatický výběr komprese obrázků
Když prezentace obsahuje mnoho fotografií nebo snímků obrazovky, zmenšení velikosti exportovaného PDF může usnadnit odeslání e-mailem nebo stažení. Zavolejte PdfOptions::set_BestImagesCompressionRatio s true pro automatický výběr nejvhodnějšího kompresního algoritmu pro každý obrázek během exportu PDF.
Následující příklad načte existující prezentaci, povolí automatický výběr komprese obrázků a uloží ji jako PDF dokument. Všechna ostatní nastavení exportu PDF zůstávají ve výchozím stavu.
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_BestImagesCompressionRatio(true);
auto presentation = MakeObject<Presentation>(u"image-heavy.pptx");
presentation->Save(u"image-heavy.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Tato možnost vybírá kompresní algoritmus pro každý obrázek. Snížení JPEG kvality pomocí set_JpegQuality místo toho snižuje kvalitu JPEG obrázku, zatímco snížení rozlišení pomocí set_SufficientResolution umožňuje obrázkům být downsamplovány na nižší rozlišení, což může zmenšit detail. Povolení automatického výběru komprese samo o sobě nesnižuje žádné z těchto nastavení.
Výběr kompresních algoritmů pro obrázky vyžaduje dodatečný čas zpracování a paměť. Redukce velikosti závisí na obrázcích v prezentaci a nastaveních exportu; pevná úspora není zaručena pro každou prezentaci.
Zachovat vložené OLE soubory jako přílohy PDF
Pokud prezentace obsahuje vložený Excel sešit, můžete chtít, aby příjemci PDF mohli přistupovat k datům sešitu i prohlížet snímky. Zavolejte PdfOptions::set_IncludeOleData s true, aby se vložené OLE soubory zachovaly jako přílohy v výsledném PDF.
Výchozí hodnota je false: náhledový obrázek nebo ikona OLE objektu je vykreslena na stránce PDF, ale jeho vložený soubor není zahrnut jako příloha. Nastavením možnosti na true se navíc zahrnou data souboru. Náhled zůstává vizuální reprezentací; příloha umožňuje příjemcům otevřít nebo uložit vložený soubor odděleně. OLE objekt se nestane interaktivním Excel listem na stránce PDF.
Následující příklad načte prezentaci, která již obsahuje vložený Excel sešit, a exportuje ji do PDF s připojeným sešitem.
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_IncludeOleData(true);
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
presentation->Save(u"presentation.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Chcete-li výsledek zkontrolovat:
- Otevřete exportované PDF v prohlížeči, který podporuje souborové přílohy, například Adobe Acrobat Reader.
- Otevřete panel Přílohy prohlížeče a najděte vložený sešit.
- Uložte přílohu a otevřete ji v Excelu pro kontrolu dat, nebo ji otevřete přímo, pokud to prohlížeč umožňuje. Náhled na stránce PDF je oddělený od přílohy.
Note
Standardy PDF/A ukládají omezení na přílohy: PDF/A-1 zakazuje vložené soubory, PDF/A-2 povoluje pouze PDF/A přílohy a PDF/A-3 povoluje jiné typy souborů, včetně Excel sešitů. Jedná se o požadavky standardů, nikoli omezení specifická pro Aspose.Slides. Tento příklad používá výchozí nastavení souladu PDF a neukazuje export do PDF/A.Převod PowerPoint do PDF se skrytými snímky
Pokud prezentace obsahuje skryté snímky, můžete použít metodu set_ShowHiddenSlides ze třídy PdfOptions, aby se skryté snímky zahrnuly jako stránky ve výsledném PDF.
Následující příklad exportuje prezentaci do PDF, včetně všech skrytých snímků.
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_ShowHiddenSlides(true);
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");
presentation->Save(u"PowerPoint-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Převod PowerPoint do PDF chráněného heslem
Následující příklad exportuje prezentaci do PDF, které vyžaduje heslo password pro otevření. Oprávnění přístupu umožňují tisk, včetně tisku ve vysoké kvalitě.
#include <DOM/Presentation.h>
#include <Export/PdfAccessPermissions.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_Password(u"password");
pdfOptions->set_AccessPermissions(PdfAccessPermissions::PrintDocument | PdfAccessPermissions::HighQualityPrint);
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");
presentation->Save(u"PPTX-to-PDF.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Detekce náhrad písem
Aspose.Slides poskytuje metodu set_WarningCallback ve třídě PdfOptions, která vám umožní detekovat náhrady písem během procesu převodu prezentace do PDF.
Následující příklad exportuje prezentaci do PDF a vypíše varování o náhradách písem do konzole. Varování se vypíše pouze když je během exportu nahrazeno nedostupné písmo.
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <Warnings/IWarningCallback.h>
#include <Warnings/IWarningInfo.h>
#include <Warnings/ReturnAction.h>
#include <Warnings/WarningType.h>
#include <system/console.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace Aspose::Slides::Warnings;
using namespace System;
class FontSubstitutionHandler : public IWarningCallback
{
public:
ReturnAction Warning(SharedPtr<IWarningInfo> warning) override
{
if (warning->get_WarningType() == WarningType::DataLoss && warning->get_Description().StartsWith(u"Font will be substituted"))
{
Console::WriteLine(u"Font substitution warning: {0}", warning->get_Description());
}
return ReturnAction::Continue;
}
};
auto pdfOptions = MakeObject<PdfOptions>();
auto warningHandler = MakeObject<FontSubstitutionHandler>();
pdfOptions->set_WarningCallback(warningHandler);
auto presentation = MakeObject<Presentation>(u"sample.pptx");
presentation->Save(u"output.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Note
Pro více informací o náhradě písem viz článek Font Substitution.Zpracování písem bez vyhrazeného tučného typu
Prezentace může použít tučné formátování textu i když její písmo nemá vyhrazený tučný typ. Text se může i tak zobrazit tučně pomocí syntetického tučného písma, které uměle zesvětluje běžné glyfy. Pokud text vypadá příliš těžce nebo jinak neodpovídá zamýšlenému vzhledu v PDF, zkuste zavolat PdfOptions::set_RasterizeUnsupportedFontStyles s true. Tato možnost během exportu PDF vykreslí postižený text jako bitmapu a může zlepšit jeho vzhled pro některá písma. Výchozí hodnota je false.
Vzorová prezentace obsahuje dvě textová pole: jedno s běžným textem a jedno s tučným formátováním aplikovaným na stejné písmo, které nemá vyhrazený tučný typ. Následující příklad načte prezentaci, povolí rasterizaci nepodporovaných stylů písma a exportuje ji do PDF:
#include <DOM/Presentation.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_RasterizeUnsupportedFontStyles(true);
auto presentation = MakeObject<Presentation>(u"unsupported-bold.pptx");
presentation->Save(u"rasterized.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Následující náhledy ukazují výstup s vypnutou a zapnutou volbou. V tomto příkladu má tučný text těžší tahy při vypnuté možnosti. Při zapnuté možnosti jsou tahy lehčí; běžný text zůstává nezměněn. Porovnejte výsledky před tím, než zvolíte nastavení pro vaši prezentaci.
Možnost vypnutá (false, výchozí) |
Možnost zapnutá (true) |
|---|---|
![]() |
![]() |
V tomto příkladu povolení možnosti převádí pouze tučný text na bitmapu: nelze jej vybrat, kopírovat ani vyhledávat jako text bez OCR a jeho hrany vypadají měkčí při 800 % přiblížení. Běžný text zůstává vyhledávatelný. Při vypnuté možnosti zůstávají oba řetězce jako text.
Tato možnost rasterizuje text formátovaný jako tučný, když jeho písmo nemá vyhrazený tučný typ. Font substitution místo toho vybere jiné písmo, pokud není originál dostupný.
Převod vybraných snímků z PowerPoint do PDF
Následující příklad exportuje snímky 1 a 3 z prezentace do PDF. Čísla snímků v tomto poli jsou číslována od jedné a vstupní prezentace musí obsahovat alespoň tři snímky.
#include <DOM/Presentation.h>
#include <Export/SaveFormat.h>
#include <system/array.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"PowerPoint.pptx");
auto slides = MakeArray<int32_t>({ 1, 3 });
presentation->Save(u"PPTX-to-PDF.pdf", slides, SaveFormat::Pdf);
presentation->Dispose();
Převod PowerPoint do PDF s vlastní velikostí snímku
Následující příklad zkopíruje první snímek z prezentace do nové prezentace s velikostí snímku 612 × 792 bodů (8,5 × 11 palců). Škáluje obsah snímku, aby se vešel, a exportuje jediný snímek do PDF.
#include <DOM/ISlideCollection.h>
#include <DOM/ISlideSize.h>
#include <DOM/Presentation.h>
#include <DOM/SlideSizeScaleType.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto slideWidth = 612;
auto slideHeight = 792;
auto presentation = MakeObject<Presentation>(u"SelectedSlides.pptx");
auto resizedPresentation = MakeObject<Presentation>();
resizedPresentation->get_SlideSize()->SetSize(slideWidth, slideHeight, SlideSizeScaleType::EnsureFit);
auto slide = presentation->get_Slide(0);
resizedPresentation->get_Slides()->InsertClone(0, slide);
// Remove the blank slide that the new presentation was created with.
resizedPresentation->get_Slides()->RemoveAt(1);
resizedPresentation->Save(u"PDF_with_custom_slide_size.pdf", SaveFormat::Pdf);
resizedPresentation->Dispose();
presentation->Dispose();
Převod PowerPoint do PDF v zobrazení poznámek ke snímkům
Následující příklad exportuje prezentaci do PDF, přičemž umístí poznámky přednášejícího každého snímku pod snímek. Použijte prezentaci obsahující poznámky přednášejícího, abyste viděli výsledek.
#include <DOM/Presentation.h>
#include <Export/NotesCommentsLayoutingOptions.h>
#include <Export/NotesPositions.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto notesOptions = MakeObject<NotesCommentsLayoutingOptions>();
notesOptions->set_NotesPosition(NotesPositions::BottomFull);
auto pdfOptions = MakeObject<PdfOptions>();
pdfOptions->set_SlidesLayoutOptions(notesOptions);
auto presentation = MakeObject<Presentation>(u"NotesFile.pptx");
presentation->Save(u"PDF_with_notes.pdf", SaveFormat::Pdf, pdfOptions);
presentation->Dispose();
Standardy přístupnosti a souladu pro PDF
Aspose.Slides vám umožňuje použít proceduru převodu, která vyhovuje Web Content Accessibility Guidelines (WCAG). Můžete exportovat dokument PowerPoint do PDF pomocí kterékoli z těchto standardů souladu: PDF/A1a, PDF/A1b a PDF/UA.
Tento C++ kód ukazuje proces převodu PowerPoint do PDF, který vytváří několik PDF na základě různých standardů souladu:
#include <DOM/Presentation.h>
#include <Export/PdfCompliance.h>
#include <Export/PdfOptions.h>
#include <Export/SaveFormat.h>
#include <system/smart_ptr.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"pres.pptx");
auto pdfOptionsA1a = MakeObject<PdfOptions>();
pdfOptionsA1a->set_Compliance(PdfCompliance::PdfA1a);
presentation->Save(u"pres-a1a-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1a);
auto pdfOptionsA1b = MakeObject<PdfOptions>();
pdfOptionsA1b->set_Compliance(PdfCompliance::PdfA1b);
presentation->Save(u"pres-a1b-compliance.pdf", SaveFormat::Pdf, pdfOptionsA1b);
auto pdfOptionsUa = MakeObject<PdfOptions>();
pdfOptionsUa->set_Compliance(PdfCompliance::PdfUa);
presentation->Save(u"pres-ua-compliance.pdf", SaveFormat::Pdf, pdfOptionsUa);
presentation->Dispose();
Note
Aspose.Slides podporuje operace převodu PDF, které vám umožňují převádět PDF soubory do oblíbených formátů. Můžete provádět převody PDF to HTML, PDF to image, PDF to JPG, a PDF to PNG. Další převody PDF do specializovaných formátů — PDF to SVG, PDF to TIFF, a PDF to XML — jsou také podporovány.Poznámka: Při exportu do PDF/UA Aspose.Slides zachází s komplexní grafikou, jako jsou SmartArt, grafy a vzorce, jako s jednou figurou. Jednotlivé cestovní elementy nejsou zachovány jako samostatný obsah a mohou být označeny jako artefakty; alternativní text je poskytován pouze pro celou figuru.
Často kladené otázky
Mohu hromadně převést více souborů PowerPoint do PDF?
Ano, Aspose.Slides podporuje dávkový převod více souborů PPT nebo PPTX do PDF. Můžete procházet své soubory a programově aplikovat proces převodu.
Je možné chránit převodní PDF heslem?
Ano. Použijte třídu PdfOptions, abyste nastavili heslo a definovali oprávnění přístupu během procesu převodu.
Jak zahrnout skryté snímky do PDF?
Použijte metodu set_ShowHiddenSlides ve třídě PdfOptions, aby se skryté snímky zahrnuly do výsledného PDF.
Může Aspose.Slides zachovat vysokou kvalitu obrázků v PDF?
Ano, můžete kontrolovat kvalitu obrázků pomocí metod jako set_JpegQuality a set_SufficientResolution ve třídě PdfOptions, abyste zajistili vysoce kvalitní obrázky ve vašem PDF.
Podporuje Aspose.Slides standardy souladu PDF/A?
Ano, Aspose.Slides vám umožňuje exportovat PDF, která odpovídají různým standardům, včetně PDF/A1a, PDF/A1b a PDF/UA, čímž zajišťuje, že vaše dokumenty splňují požadavky na přístupnost a archivaci.

