Specificați opțiunile De redare la conversia în PDF
Formatul PDF este un format de pagină fixă care este foarte popular în rândul utilizatorilor și este acceptat pe scară largă de diverse aplicații, deoarece un document PDF arată la fel pe orice dispozitiv. Din acest motiv, conversia în PDF este o caracteristică importantă a Aspose.Words.
PDF este un format complex. Sunt necesare mai multe etape de calcule în procesul de conversie a unui document în PDF, inclusiv calculul aspectului. Deoarece aceste etape includ calcule complexe, acestea consumă mult timp. De asemenea, formatul PDF este destul de complex în sine. Are o structură specifică de fișiere, model grafic și încorporare de fonturi. Mai mult, are unele funcționalități complexe de ieșire, cum ar fi etichetele structurii documentelor, criptarea, semnăturile digitale și formularele editabile.
Aspose.Words motorul de aspect imită modul în care funcționează motorul de aspect al paginii Microsoft Word. Prin urmare, Aspose.Words face ca documentele de ieșire PDF să arate cât mai aproape posibil de ceea ce puteți vedea în Microsoft Word. Uneori este necesar să specificați opțiuni suplimentare, care pot afecta rezultatul salvării unui document în formatul PDF. Aceste opțiuni pot fi specificate prin utilizarea clasei PdfSaveOptions, care conține proprietățile care determină modul în care va fi afișată ieșirea PDF.
Câteva exemple de utilizare a PdfSaveOptions sunt furnizate mai jos.
În prezent, puteți salva în PDF 1.7, PDF 2.0, PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2u, și PDF/UA-1 formate. Utilizați enumerarea PdfCompliance pentru a seta nivelul de conformitate cu standardele PDF. Rețineți că, cu formatul PDF/A, o dimensiune a fișierului de ieșire este mai mare decât o dimensiune obișnuită a fișierului PDF.
PdfCompliance.PdfA1a și PdfCompliance.PdfA1b sunt marcate ca învechite.
Pentru mai multe informații despre PDF/A, consultați articolul următor, “aflați caracteristicile conversiei în PDF/A”.
Crearea unui Document PDF cu formulare completabile
De asemenea, este posibil să exportați formulare completabile dintr-un document Microsoft Word În ieșire PDF, care are formulare completabile în loc de un text simplu. Utilizați proprietatea PreserveFormFields pentru a salva un document ca PDF cu formulare completabile.
Rețineți că, spre deosebire de Microsoft Word, formatul PDF are un număr limitat de opțiuni pentru formulare editabile, cum ar fi textbox, combo box și checkbox. Microsoft Word are mai multe tipuri de formulare, de exemplu, calendar data picker. În general, nu este posibil să imităm pe deplin comportamentul Microsoft Word în PDF. Prin urmare, în unele cazuri complexe, ieșirea PDF poate diferi de ceea ce vedeți în Microsoft Word.
Exemplul de cod de mai jos arată cum să salvați un document ca PDF cu formulare completabile cu compresie și calitate Jpeg specificate:
// 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); |
Exportarea structurii documentelor și a proprietăților personalizate
Proprietatea ExportDocumentStructure vă permite să exportați structura documentului în PDF ieșire.
PDF facilitățile structurii logice oferă un mecanism de încorporare a informațiilor referitoare la structura conținutului documentului într-un fișier PDF. Aspose.Words păstrează informații despre structură dintr-un document Microsoft Word, cum ar fi paragrafe, liste, tabele, note de subsol/note de final etc.
Următorul exemplu demonstrează cum să salvați un document în format PDF, păstrând structura documentului:
// 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 vă permite, de asemenea, să exportați Proprietăți personalizate ale documentului în PDF, ceea ce este demonstrat de următorul exemplu:
// 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); |
Exportarea contururilor din marcaje și titluri în Ieșire PDF
Dacă doriți să exportați marcaje ca contururi în ieșire PDF, puteți utiliza proprietatea DefaultBookmarksOutlineLevel. Această proprietate specifică nivelul implicit în schița documentului, la care sunt afișate marcajele Microsoft Word. Dacă documentul conține marcaje în antetul / subsolul documentului, puteți seta proprietatea HeaderFooterBookmarksExportMode la First sau All pentru a specifica modul în care sunt exportate în ieșire PDF. Marcajele din anteturi / subsoluri nu sunt exportate atunci când valoarea HeaderFooterBookmarksExportMode este None.
Exemplul de cod de mai jos arată cum să exportați marcaje din primul antet/subsol al unei secțiuni:
Rezultatul PDF al acestui exemplu este prezentat mai jos:
Când HeaderFooterBookmarksExportMode este setat la First și documentul are anteturi/subsoluri pare și impare sau un antet/subsol diferit de prima pagină, marcajele sunt exportate pentru primele anteturi/subsoluri unice dintr-o secțiune.
De asemenea, puteți exporta titluri în Ieșire PDF, folosind proprietatea HeadingsOutlineLevels. Această proprietate specifică câte niveluri de titluri sunt incluse în schița documentului.
Exemplul de cod de mai jos arată cum să exportați titluri cu trei niveluri:
// 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); |
Rezultatul PDF al acestui exemplu este prezentat mai jos:
Reducerea eșantionării imaginilor pentru a Reduce dimensiunea documentului
Aspose.Words oferă posibilitatea de a reduce eșantionarea imaginilor pentru a reduce dimensiunea de ieșire PDF, folosind proprietatea DownsampleOptions. Downsampling este activat în mod implicit în proprietatea DownsampleImages.
Rețineți că este, de asemenea, posibil să setați o rezoluție specifică în proprietatea Resolution sau un prag de rezoluție în proprietatea ResolutionThreshold. În al doilea caz, dacă rezoluția imaginii este mai mică decât valoarea pragului, atunci nu se va aplica eșantionarea descendentă.
Exemplul de cod de mai jos afișează modul de modificare a rezoluției imaginilor într-un document de ieșire PDF:
// 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); |
Rezoluția este calculată în funcție de dimensiunea reală a imaginii de pe pagină.
Încorporarea fonturilor în format Adobe PDF
Aspose.Words de asemenea, vă permite să controlați modul în care fonturile sunt încorporate în documentele PDF rezultate. Fonturile trebuie să fie încorporate în orice document Adobe PDF pentru a vă asigura că documentul poate fi redat corect pe orice mașină (consultați mai multe detalii despre redarea fontului în secțiune Folosind TrueType Fonturi). În mod implicit, Aspose.Words încorporează un subset de fonturi utilizate în document în PDF generat. În acest caz, numai glifele (caracterele) utilizate în document sunt salvate în PDF.
Când să utilizați fonturi complete și când să Subsetați
Există o modalitate de a specifica o opțiune pentru Aspose.Words pentru a încorpora fonturi complete. Mai multe detalii, împreună cu unele avantaje și dezavantaje ale fiecărei setări sunt descrise în tabelul de mai jos.
Modul De Încorporare A Fonturilor | Avantaje | Dezavantaje |
---|---|---|
Full |
Util atunci când doriți să editați rezultatul PDF mai târziu prin adăugarea sau modificarea textului. Toate fonturile sunt incluse, prin urmare, toate glifele sunt prezente. | Deoarece unele fonturi sunt mari (mai multe megaocteți), încorporarea lor fără subsetare poate duce la fișiere de ieșire mari. |
Subset |
Subsetarea este utilă dacă doriți să păstrați Dimensiunea fișierului de ieșire mai mică. | Utilizatorul nu poate adăuga sau edita complet textul folosind fontul subsetat din documentul de ieșire PDF. Acest lucru se datorează faptului că nu toate glifele fontului sunt prezente. Dacă mai multe PDFs sunt salvate cu fonturi subsetate și asamblate împreună, atunci documentul combinat PDF poate avea un font care conține multe subseturi inutile. |
Încorporarea fonturilor complete în PDF
Proprietatea EmbedFullFonts vă permite să specificați modul în care Aspose.Words încorporează fonturile într-un document de ieșire PDF.
- Pentru a încorpora fonturi complete în documentul de ieșire PDF, Setați EmbedFullFonts la true
- Pentru a subseta fonturile când salvați în PDF, Setați EmbedFullFonts la fals
Următorul exemplu demonstrează cum să încorporați fonturi complete în documentul de ieșire 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"); | |
// 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); |
Următorul exemplu demonstrează cum să setați Aspose.Words la subset fonturi în Ieșire 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); |
Cum să controlați încorporarea fonturilor de bază și a fonturilor standard Windows
Fonturile de bază și fonturile standard Windows sunt seturile de fonturi “standard”, care sunt de obicei prezente pe mașina țintă sau furnizate de cititorul de documente, prin urmare nu trebuie să fie încorporate în ieșirea PDF. Prin faptul că nu încorporați aceste fonturi, puteți reduce dimensiunea documentelor redate PDF și totuși puteți menține portabilitatea.
Aspose.Words oferă opțiuni pentru a alege modul în care fonturile sunt exportate în PDF. Puteți alege fie să încorporați fonturile core și standard în ieșirea PDF, fie să săriți încorporarea lor și să utilizați fonturi standard core PDF sau fonturi de sistem pe mașina țintă. Utilizarea oricăreia dintre aceste opțiuni are ca rezultat în mod normal o reducere semnificativă a dimensiunii fișierului pentru documentele PDF generate de Aspose.Words.
- Deoarece aceste opțiuni se exclud reciproc, ar trebui să alegeți doar una câte una.
- Când salvați cu PDF/A-1 conformitate, toate fonturile utilizate trebuie să fie încorporate cu documentul PDF. Când salvați cu această conformitate, proprietatea UseCoreFonts trebuie setată la false și proprietatea FontEmbeddingMode trebuie setată la EmbedAll.
Încorporarea Fonturilor De Bază
Opțiunea de a încorpora fonturi de bază poate fi activată sau dezactivată utilizând proprietatea UseCoreFonts. Când este setat la true, următoarele fonturi “True Type” cele mai populare (fonturi de bază 14) nu sunt încorporate în documentul de ieșire PDF:
Arial
Times New Roman
Courier New
Symbol
Aceste fonturi sunt înlocuite cu fonturile corespunzătoare de tip de bază 1, care sunt furnizate de un cititor atunci când PDF este deschis.
Exemplul de mai jos arată cum să setați Aspose.Words pentru a evita încorporarea fonturilor de bază și lăsați cititorul să le înlocuiască cu PDF Tastați 1 fonturi:
// 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); |
Deoarece vizualizatorii PDF furnizează fonturi de bază pe orice platformă acceptată, această opțiune este utilă și atunci când este necesară o portabilitate mai mare a documentelor. Cu toate acestea, fonturile de bază pot arăta diferit de fonturile de sistem.
Încorporarea Fonturilor De Sistem
Această opțiune poate fi activată sau dezactivată utilizând proprietatea FontEmbeddingMode. Când această proprietate este setată la EmbedNonstandard, fonturile de tip adevărat" Arial " și “Times New Roman” nu sunt încorporate într-un document PDF. În acest caz, vizualizatorul client se bazează pe fonturile instalate pe sistemul de operare client. Când proprietatea FontEmbeddingMode este setată la EmbedNone, Aspose.Words nu încorporați Niciun font.
Exemplul de mai jos arată cum să setați Aspose.Words pentru a sări peste încorporarea fonturilor Arial și Times New Roman într-un document 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 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"); |
Acest mod este cel mai util atunci când doriți să vizualizați documentele pe aceeași platformă, păstrând aspectul exact al fonturilor în Ieșire PDF.