Upřesnit možnosti renderování při převodu do PDF

Formát PDF je formát pevné stránky, který je velmi populární mezi uživateli a široce podporován různými aplikacemi, protože PDF dokument vypadá stejně na každém zařízení. Z tohoto důvodu, konverze na PDF je důležitým rysem Aspose.Words.

PDF je složitý formát. V procesu přeměny dokumentu na PDF je požadováno několik fází výpočtů, včetně výpočtu rozvržení. Vzhledem k tomu, že tyto fáze zahrnují složité výpočty, jsou časově náročné. Také formát PDF je poměrně složitý sám o sobě. Má specifickou strukturu souboru, grafický model a vkládání písma. Kromě toho má některé složité funkce výstupu, jako jsou značky struktury dokumentů, šifrování, digitální podpisy a editovatelné formuláře.

Aspose.Words rozložení motoru napodobuje způsob Microsoft WordPage layout engine funguje. Proto Aspose.Words umožňuje PDF výstupní dokumenty vypadat co nejblíže tomu, co můžete vidět v Microsoft Word. Někdy je nutné upřesnit další možnosti, které mohou ovlivnit výsledek uložení dokumentu do formátu PDF. Tyto možnosti lze určit použitím PdfSaveOptions třída obsahující vlastnosti, které určují, jak se zobrazí výstup PDF.

Některé příklady použití PdfSaveOptions jsou uvedeny níže.

Vytvoření PDF Dokument s plombami

Je také možné exportovat vyplněné formuláře z Microsoft Word dokument do výstupu PDF, který má místo prostého textu vyplněné formuláře. Použijte PreserveFormFields vlastnost uložit dokument jako PDF s plnejmi formuláři.

Všimněte si, že na rozdíl od Microsoft Word, formát PDF má omezený počet možností pro editovatelné formuláře, jako je textbox, combo box a checkbox. Microsoft Word má více typů formulářů, například kalendáře sběrač dat. Obecně není možné plně napodobovat Microsoft Word chování v PDF. Proto, v některých složitých případech, PDF výstup může lišit od toho, co vidíte v Microsoft Word.

Níže uvedený příklad kódu ukazuje, jak uložit dokument jako PDF s plnejmi formuláři s zadaným Jpeg komprese a kvalita:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "SaveOptions.PdfImageCompression.rtf");
PdfSaveOptions options = new PdfSaveOptions();
options.setImageCompression(PdfImageCompression.JPEG);
options.setPreserveFormFields(true);
doc.save(dataDir + "SaveOptions.PdfImageCompression.pdf", options);
PdfSaveOptions options17 = new PdfSaveOptions();
options17.setCompliance(PdfCompliance.PDF_17);
options17.setImageCompression(PdfImageCompression.JPEG);
options17.setJpegQuality(100);// Use JPEG compression at 50% quality to reduce file size
options17.setImageColorSpaceExportMode(PdfImageColorSpaceExportMode.SIMPLE_CMYK);
doc.save(dataDir + "SaveOptions.PdfImageComppression_17.pdf", options17);

Exportovat strukturu dokumentu a vlastní vlastnosti

The ExportDocumentStructure vlastnost umožňuje export struktury dokumentů do výstupu PDF.

Logická struktura PDF poskytuje mechanismus pro začlenění informací, týkajících se struktury obsahu dokumentu, do souboru PDF. Aspose.Words uchovává informace o struktuře od Microsoft Word dokument, jako jsou odstavce, seznamy, tabulky, poznámky pod čarou/poznámky atd.

Následující příklad ukazuje, jak uložit dokument do formátu PDF a zachovat strukturu dokumentu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to //
// https://github.com/aspose-words/Aspose.Words-for-Java
// Open a document
Document doc = new Document(dataDir + "Paragraphs.docx");
// Create a PdfSaveOptions object and configure it to preserve the logical
// structure that's in the input document
// The file size will be increased and the structure will be visible in the
// "Content" navigation pane
// of Adobe Acrobat Pro, while editing the .pdf
PdfSaveOptions options = new PdfSaveOptions();
options.setExportDocumentStructure(true);
doc.save(dataDir + "PdfSaveOptions.ExportDocumentStructure.pdf", options);

Aspose.Words také umožňuje export dokumentu vlastní vlastnosti do PDF, což je prokázáno následujícím příkladem:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to //
// https://github.com/aspose-words/Aspose.Words-for-Java
// Open a document
Document doc = new Document();
// Add a custom document property that doesn't use the name of some built in
// properties
doc.getCustomDocumentProperties().add("Company", "My value");
// Configure the PdfSaveOptions like this will display the properties
// in the "Document Properties" menu of Adobe Acrobat Pro
PdfSaveOptions options = new PdfSaveOptions();
options.setCustomPropertiesExport(PdfCustomPropertiesExport.STANDARD);
doc.save(dataDir + "PdfSaveOptions.CustomPropertiesExport.pdf", options);

Exportovat Outlines ze záložek a hlaviček ve výstupních PDF

Pokud chcete exportovat záložky jako obrysy ve výstupním PDF, můžete použít DefaultBookmarksOutlineLevel majetek. Tato vlastnost určuje výchozí úroveň v obrysu dokumentu, na které Microsoft Word jsou zobrazeny záložky. Pokud dokument obsahuje záložky v záhlaví/noze dokumentu, můžete nastavit HeaderFooterBookmarksExportMode majetek First nebo All za účelem upřesnění, jak jsou exportovány ve výstupních PDF. Záložky v hlavičkách/nohách nejsou exportovány, pokud hodnota HeaderFooterBookmarksExportMode je None.

Příklad kódu níže ukazuje, jak exportovat záložky z první hlavičky/nohy sekce:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to //
// https://github.com/aspose-words/Aspose.Words-for-Java
// The path to the documents directory.
Document doc = new Document(dataDir + "TestFile.docx");
PdfSaveOptions options = new PdfSaveOptions();
options.getOutlineOptions().setDefaultBookmarksOutlineLevel(1);
options.setHeaderFooterBookmarksExportMode(HeaderFooterBookmarksExportMode.FIRST);
dataDir = dataDir + "ExportHeaderFooterBookmarks_out.pdf";
doc.save(dataDir, options);

Výstup PDF tohoto příkladu je uveden níže:

rendering-options-when-converting-to-pdf-aspose-words-java-1

Kdy? HeaderFooterBookmarksExportMode je nastavena na First a dokument má i a liché hlavičky/nohy nebo jinou hlavičku/nohu první strany, záložky jsou exportovány pro první jedinečné hlavičky/nohy v sekci.

Můžete také exportovat položky ve výstupním PDF pomocí HeadingsOutlineLevels majetek. Tato vlastnost určuje, kolik úrovní položek je zahrnuto v přehledu dokumentu.

Příklad kódu níže ukazuje, jak exportovat položky se třemi úrovněmi:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to //
// https://github.com/aspose-words/Aspose.Words-for-Java
// Open a document
Document doc = new Document(dataDir + "Rendering.doc");
PdfSaveOptions options = new PdfSaveOptions();
options.getOutlineOptions().setHeadingsOutlineLevels(3);
options.getOutlineOptions().setExpandedOutlineLevels(1);
doc.save(dataDir + "Rendering.SaveToPdfWithOutline.pdf", options);

Výstup PDF tohoto příkladu je znázorněn níže:

rendering-options-when-converting-to-pdf-aspose-words-java-2

Downsampling Obrázky ke snížení velikosti dokumentu

Aspose.Words poskytuje schopnost stáhnout vzorky snímků za účelem snížení velikosti výstupu PDF pomocí DownsampleOptions majetek. Downsampling je ve výchozím nastavení v DownsampleImages majetek.

Všimněte si, že je také možné stanovit konkrétní usnesení Resolution majetek nebo práh rozlišení v ResolutionThreshold majetek. V druhém případě, je-li rozlišení obrázku menší než prahová hodnota, pak se nepoužije snížení hodnoty.

Příklad kódu níže zobrazuje, jak změnit rozlišení obrázků ve výstupním PDF dokumentu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// For complete examples and data files, please go to //
// https://github.com/aspose-words/Aspose.Words-for-Java
// Open a document
Document doc = new Document(dataDir + "Rendering.doc");
// If we want to convert the document to .pdf, we can use a SaveOptions
// implementation to customize the saving process
PdfSaveOptions options = new PdfSaveOptions();
// We can set the output resolution to a different value
// The first two images in the input document will be affected by this
options.getDownsampleOptions().setResolution(36);
// We can set a minimum threshold for downsampling
// This value will prevent the second image in the input document from being
// downsampled
options.getDownsampleOptions().setResolutionThreshold(128);
doc.save(dataDir + "PdfSaveOptions.DownsampleOptions.pdf", options);

Rozlišení se počítá podle skutečné velikosti obrázku na stránce.

Vkládání písem do formátu Adobe PDF

Aspose.Words umožňuje také ovládat, jak jsou písma vložena do výsledných PDF dokumentů. Písmo musí být vloženo do jakéhokoliv dokumentu Adobe PDF, aby bylo zajištěno, že dokument může být správně vykreslen na jakémkoli stroji (viz podrobnosti o vykreslování písma v sekci Použití pravdy Typ písma). Ve výchozím nastavení Aspose.Words vloží podmnožinu písem použitých v dokumentu do vytvořeného PDF. V tomto případě pouze glyphs (znaky) použité v dokumentu jsou uloženy do PDF.

Kdy používat plná písma a kdy podnastavit

Existuje způsob, jak určit možnost Aspose.Words vložit plná písma. Další podrobnosti, spolu s některými výhodami a nevýhodami každého nastavení jsou popsány v následující tabulce.

Režim vložit písma Výhody Nevýhody
Full Užitečné, pokud chcete upravit výsledný PDF později přidáním nebo změnou textu. Všechna písma jsou zahrnuta, proto všechny glyphJsou přítomny. Vzhledem k tomu, že některá písma jsou velká (několik megabytů), jejich vložení bez subsetování může vést k velkým výstupním souborům.
Subset Subsetování je užitečné, pokud chcete udržet velikost výstupního souboru menší.

Uživatel nemůže text plně přidat nebo editovat pomocí podmnožinového písma ve výstupním PDF dokumentu. To proto, že ne všechno glyphs písma jsou přítomny.

Pokud jsou uloženy více PDF s podmnožinami a sestaveny dohromady, pak může mít kombinovaný PDF dokument font obsahující mnoho zbytečných podmnožin.

|

Vkládání plných písem do PDF

The EmbedFullFonts vlastnost umožňuje určit, jak Aspose.Words vloží fonty do výstupního PDF dokumentu.

  • Pro vložení plných písem do výstupního PDF dokumentu, nastavit EmbedFullFonts až true
  • Pro podmnožování písem při ukládání do PDF, nastavit EmbedFullFonts až false

Následující příklad ukazuje, jak vložit plná písma do výstupního PDF dokumentu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Document
Document doc = new Document(dataDir + "Rendering.doc");
// Aspose.Words embeds full fonts by default when EmbedFullFonts is set to true.
// The property below can be changed
// Each time a document is rendered.
PdfSaveOptions options = new PdfSaveOptions();
options.setEmbedFullFonts(true);
String outPath = dataDir + "Rendering.EmbedFullFonts_out.pdf";
// The output PDF will be embedded with all fonts found in the document.
doc.save(outPath, options);

Následující příklad ukazuje, jak nastavit Aspose.Words na podmnožinu písem ve výstupním PDF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Document
Document doc = new Document(dataDir + "Rendering.doc");
// To subset fonts in the output PDF document, simply create new PdfSaveOptions
// and set EmbedFullFonts to false.
PdfSaveOptions options = new PdfSaveOptions();
options.setEmbedFullFonts(false);
dataDir = dataDir + "Rendering.SubsetFonts_out.pdf";
// The output PDF will contain subsets of the fonts in the document. Only the
// glyphs used
// In the document are included in the PDF fonts.
doc.save(dataDir, options);

Jak ovládat vkládání základních písem a Windows Standardní písma

Základní písma a Windows Standardní písma jsou standardní sady písem, které jsou obvykle přítomny na cílovém stroji nebo poskytovány čtečkou dokumentů, proto nemusí být vloženy do výstupní PDF. Tím, že tyto písma nevložíte, můžete snížit velikost vykreslených dokumentů PDF a přitom zachovat přenositelnost.

Aspose.Words poskytuje možnosti výběru způsobu exportu písem do PDF. Můžete si vybrat buď vložit jádro a standardní písma do výstupního PDF nebo přeskočit jejich vložení a použít standardní jádro PDF písma nebo systémové písma na cílovém stroji místo. Použití jedné z těchto možností obvykle vede k významnému snížení velikosti souboru pro PDF dokumenty generované Aspose.Words.

  • Vzhledem k tomu, že tyto možnosti se vzájemně vylučují, měli byste si vybrat pouze jednu po druhé.
  • Při ukládání pomocí PDF/A-1 musí být všechna použitá písma vložena do PDF dokumentu. Při ukládání této shody UseCoreFonts vlastnost musí být nastavena na false a FontEmbeddingMode vlastnost musí být nastavena na EmbedAll.

Vkládání základních písem

Možnost vložit základní písma lze povolit nebo zakázat pomocí UseCoreFonts majetek. When it is set to true, Následující nejpopulárnější písma typu True (Fonty značky Base 14) nejsou ve výstupním dokumentu PDF vložena:

  • Arial
  • Times New Roman
  • Courier New
  • Symbol

Tato písma se nahrazují příslušnými písmy typu 1, které jsou poskytovány čtečkou při otevření PDF.

Níže uvedený příklad ukazuje, jak nastavit Aspose.Words aby se zabránilo vkládání základních písem a nechat čtenáře nahradit je PDF Písmo typu 1:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Document
Document doc = new Document(dataDir + "Rendering.doc");
// To disable embedding of core fonts and subsuite PDF type 1 fonts set
// UseCoreFonts to true.
PdfSaveOptions options = new PdfSaveOptions();
options.setUseCoreFonts(true);
String outPath = dataDir + "Rendering.DisableEmbedWindowsFonts_out.pdf";
// The output PDF will not be embedded with core fonts such as Arial, Times New
// Roman etc.
doc.save(outPath);

Vzhledem k tomu, že prohlížeči PDF poskytují základní písma na jakékoli podporované platformě, je tato volba užitečná i v případě potřeby větší přenositelnost dokumentů. Jádrová písma však mohou vypadat jinak než systémová písma.

Vkládání systémových písem

Tato volba může být povolena nebo vypnuta pomocí FontEmbeddingMode majetek. Když je tato vlastnost nastavena na EmbedNonstandard, Arial a Times New Roman true písma typu nejsou vložena do PDF dokumentu. V tomto případě se prohlížeč klienta spoléhá na písma, která jsou nainstalována na operačním systému klienta. Když FontEmbeddingMode vlastnost je nastavena na EmbedNone, Aspose.Words nevložte žádná písma.

Následující příklad ukazuje, jak nastavit Aspose.Words přeskočit vložení Arial a Times New Roman fonty do PDF dokumentu:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Document
Document doc = new Document(dataDir + "Rendering.doc");
// To disable embedding standard windows font use the PdfSaveOptions and set the
// EmbedStandardWindowsFonts property to false.
PdfSaveOptions options = new PdfSaveOptions();
options.setFontEmbeddingMode(PdfFontEmbeddingMode.EMBED_NONE);
// The output PDF will be saved without embedding standard windows fonts.
doc.save(dataDir + "Rendering.DisableEmbedWindowsFonts.pdf");

Tento režim je nejužitečnější, pokud si přejete zobrazit své dokumenty na stejné platformě, zachování přesného vzhledu písem ve výstupním PDF.