Określ opcje renderowania podczas konwersji do formatu PDF
Format PDF to format o stałej stronie, który jest bardzo popularny wśród użytkowników i szeroko obsługiwany przez różne aplikacje, ponieważ dokument PDF wygląda tak samo na każdym urządzeniu. Z tego powodu konwersja do formatu PDF jest ważną funkcją Aspose.Words.
PDF to złożony format. W procesie konwersji dokumentu do formatu PDF wymaganych jest kilka etapów obliczeń, w tym obliczenie układu. Ponieważ etapy te obejmują złożone obliczenia, są one czasochłonne. Ponadto format PDF sam w sobie jest dość skomplikowany. Ma specyficzną strukturę plików, model graficzny i osadzanie czcionek. Ponadto oferuje złożone funkcje wyjściowe, takie jak znaczniki struktury dokumentu, szyfrowanie, podpisy cyfrowe i formularze edytowalne.
Silnik układu Aspose.Words imituje sposób działania silnika układu strony Microsoft Word. Dlatego Aspose.Words sprawia, że dokumenty wyjściowe PDF wyglądają jak najbliżej tego, co można zobaczyć w formacie Microsoft Word. Czasami konieczne jest określenie dodatkowych opcji, które mogą mieć wpływ na wynik zapisu dokumentu w formacie PDF. Opcje te można określić za pomocą klasy PdfSaveOptions zawierającej właściwości określające sposób wyświetlania pliku wyjściowego PDF.
Poniżej podano kilka przykładów użycia PdfSaveOptions.
Obecnie można zapisywać w formatach PDF 1.7, PDF 2.0, PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2u i PDF/UA-1. Użyj wyliczenia PdfCompliance, aby ustawić poziom zgodności ze standardami PDF. Należy pamiętać, że w przypadku formatu PDF/A rozmiar pliku wyjściowego jest większy niż rozmiar zwykłego pliku PDF.
PdfCompliance.PdfA1a i PdfCompliance.PdfA1b są oznaczone jako przestarzałe.
Więcej informacji na temat formatu PDF/A można znaleźć w następnym artykule “Poznaj funkcje konwersji do formatu PDF/A”.
Tworzenie dokumentu PDF z formularzami do wypełnienia
Możliwe jest również eksportowanie formularzy do wypełnienia z dokumentu Microsoft Word do wyjściowego pliku PDF, który zamiast zwykłego tekstu zawiera formularze do wypełnienia. Użyj właściwości PreserveFormFields, aby zapisać dokument w formacie PDF z formularzami do wypełnienia.
Należy pamiętać, że w przeciwieństwie do Microsoft Word, format PDF ma ograniczoną liczbę opcji edytowalnych formularzy, takich jak pole tekstowe, pole kombi i pole wyboru. Microsoft Word zawiera więcej typów formularzy, na przykład selektor dat kalendarza. Ogólnie rzecz biorąc, nie jest możliwe pełne imitowanie zachowania Microsoft Word w formacie PDF. Dlatego w niektórych skomplikowanych przypadkach wynik w formacie PDF może różnić się od tego, co widzisz w Microsoft Word.
Poniższy przykład kodu pokazuje, jak zapisać dokument w formacie PDF z formularzami do wypełnienia z określoną kompresją i jakością Jpeg:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
Document doc = new Document(MyDir + "Rendering.docx"); | |
PdfSaveOptions saveOptions = new PdfSaveOptions | |
{ | |
ImageCompression = PdfImageCompression.Jpeg, PreserveFormFields = true | |
}; | |
doc.Save(ArtifactsDir + "WorkingWithPdfSaveOptions.PdfImageCompression.pdf", saveOptions); | |
PdfSaveOptions saveOptions17 = new PdfSaveOptions | |
{ | |
Compliance = PdfCompliance.Pdf17, | |
ImageCompression = PdfImageCompression.Jpeg, | |
JpegQuality = 100, // Use JPEG compression at 50% quality to reduce file size. | |
ImageColorSpaceExportMode = PdfImageColorSpaceExportMode.SimpleCmyk | |
}; | |
doc.Save(ArtifactsDir + "WorkingWithPdfSaveOptions.PdfImageCompression_17.pdf", saveOptions17); |
Eksportowanie struktury dokumentu i właściwości niestandardowych
Właściwość [https://reference.aspose.com/words/net/aspose.words.saving/pdfsaveoptions/properties/exportdocumentstructure) umożliwia eksport struktury dokumentu do pliku PDF.
Funkcje struktury logicznej PDF zapewniają mechanizm włączania informacji dotyczących struktury zawartości dokumentu do pliku PDF. Aspose.Words zachowuje informacje o strukturze z dokumentu Microsoft Word, takie jak akapity, listy, tabele, przypisy/przypisy końcowe itp.
Poniższy przykład pokazuje, jak zapisać dokument w formacie PDF, zachowując strukturę dokumentu:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// 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.ExportDocumentStructure = true; | |
doc.Save(dataDir + "PdfSaveOptions.ExportDocumentStructure.pdf", options); |
Aspose.Words umożliwia także eksport niestandardowych właściwości dokumentu do formatu PDF, co ilustruje poniższy przykład:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Open a document | |
Document doc = new Document(); | |
// Add a custom document property that doesn't use the name of some built in properties | |
doc.CustomDocumentProperties.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.CustomPropertiesExport = PdfCustomPropertiesExport.Standard; | |
doc.Save(dataDir + "PdfSaveOptions.CustomPropertiesExport.pdf", options); |
Eksportowanie konturów z zakładek i nagłówków w wyjściowym pliku PDF
Jeśli chcesz wyeksportować zakładki jako kontury w wyjściowym pliku PDF, możesz użyć właściwości DefaultBookmarksOutlineLevel. Właściwość ta określa domyślny poziom w konspekcie dokumentu, na którym wyświetlane są zakładki Microsoft Word. Jeśli dokument zawiera zakładki w nagłówku/stopce dokumentu, możesz ustawić właściwość HeaderFooterBookmarksExportMode na First lub All, aby określić sposób ich eksportowania do wyjściowego pliku PDF. Zakładki w nagłówkach/stopkach nie są eksportowane, gdy wartość HeaderFooterBookmarksExportMode to None.
Poniższy przykład kodu pokazuje, jak wyeksportować zakładki z pierwszego nagłówka/stopki sekcji:
Wyjściowy plik PDF tego przykładu pokazano poniżej:
Jeśli HeaderFooterBookmarksExportMode jest ustawiony na First i dokument ma parzyste i nieparzyste nagłówki/stopki lub inny nagłówek/stopkę pierwszej strony, zakładki są eksportowane dla pierwszych unikalnych nagłówków/stopek w sekcji.
Możesz także eksportować nagłówki do wyjściowego pliku PDF, korzystając z właściwości HeadingsOutlineLevels. Ta właściwość określa, ile poziomów nagłówków znajduje się w konspekcie dokumentu.
Poniższy przykład kodu pokazuje, jak eksportować nagłówki z trzema poziomami:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Open a document | |
Document doc = new Document(dataDir + "Rendering.doc"); | |
PdfSaveOptions options = new PdfSaveOptions(); | |
options.OutlineOptions.HeadingsOutlineLevels = 3; | |
options.OutlineOptions.ExpandedOutlineLevels = 1; | |
doc.Save(dataDir + "Rendering.SaveToPdfWithOutline.pdf", options); |
Wyjściowy plik PDF tego przykładu przedstawiono poniżej:
Próbkowanie obrazów w dół w celu zmniejszenia rozmiaru dokumentu
Aspose.Words zapewnia możliwość próbkowania obrazów w dół w celu zmniejszenia rozmiaru wyjściowego pliku PDF przy użyciu właściwości DownsampleOptions. Próbkowanie w dół jest domyślnie włączone we właściwości DownsampleImages.
Należy pamiętać, że możliwe jest również ustawienie określonej rozdzielczości we właściwości Resolution lub progu rozdzielczości we właściwości ResolutionThreshold. W drugim przypadku, jeśli rozdzielczość obrazu będzie mniejsza od wartości progowej, wówczas downsampling nie zostanie zastosowany.
Poniższy przykład kodu pokazuje, jak zmienić rozdzielczość obrazów w wyjściowym dokumencie PDF:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Open a document that contains images | |
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.DownsampleOptions.Resolution = 36; | |
// We can set a minimum threshold for downsampling | |
// This value will prevent the second image in the input document from being downsampled | |
options.DownsampleOptions.ResolutionThreshold = 128; | |
doc.Save(dataDir + "PdfSaveOptions.DownsampleOptions.pdf", options); |
Rozdzielczość jest obliczana na podstawie rzeczywistego rozmiaru obrazu na stronie.
Osadzanie czcionek w formacie Adobe PDF
Aspose.Words umożliwia także kontrolowanie sposobu osadzania czcionek w wynikowych dokumentach PDF. Czcionki muszą być osadzone w dowolnym dokumencie Adobe PDF, aby zapewnić prawidłowe renderowanie dokumentu na dowolnym komputerze (więcej szczegółów na temat renderowania czcionek można znaleźć w sekcji Korzystanie z czcionek TrueType). Domyślnie Aspose.Words osadza podzbiór czcionek używanych w dokumencie w wygenerowanym pliku PDF. W takim przypadku w formacie PDF zapisywane są wyłącznie pliki glyph (znaki) użyte w dokumencie.
Kiedy używać pełnych czcionek i kiedy podzbiór
Istnieje sposób, aby określić opcję osadzania pełnych czcionek w Aspose.Words. Dalsze szczegóły oraz niektóre zalety i wady każdego ustawienia opisano w poniższej tabeli.
Tryb osadzania czcionek | Zalety | Niedogodności |
---|---|---|
Full |
Przydatne, gdy chcesz później edytować wynikowy plik PDF, dodając lub modyfikując tekst. Wszystkie czcionki są uwzględnione, dlatego obecne są wszystkie pliki glyph. | Ponieważ niektóre czcionki są duże (kilka megabajtów), osadzanie ich bez podziału na podzbiory może skutkować powstaniem dużych plików wyjściowych. |
Subset |
Podzbiór jest przydatny, jeśli chcesz zachować mniejszy rozmiar pliku wyjściowego. | Użytkownik nie może w pełni dodawać ani edytować tekstu przy użyciu czcionki podustawionej w wyjściowym dokumencie PDF. Dzieje się tak, ponieważ nie wszystkie pliki glyph czcionki są obecne. |
Jeśli zapisano wiele plików PDF z podzestawami czcionek i złożono je razem, wówczas połączony dokument PDF może zawierać czcionkę zawierającą wiele niepotrzebnych podzbiorów.
|Osadzanie pełnych czcionek w formacie PDF
Właściwość EmbedFullFonts umożliwia określenie sposobu, w jaki Aspose.Words osadza czcionki w wyjściowym dokumencie PDF.
- Aby osadzić pełne czcionki w wyjściowym dokumencie PDF, ustaw EmbedFullFonts na true
- Aby ustawić podzbiór czcionek podczas zapisywania w formacie PDF, ustaw EmbedFullFonts na false
Poniższy przykład ilustruje sposób osadzania pełnych czcionek w wyjściowym dokumencie PDF:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Load the document to render. | |
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.EmbedFullFonts = 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); |
Poniższy przykład ilustruje sposób ustawienia Aspose.Words w celu podzbioru czcionek w wyjściowym pliku PDF:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Load the document to render. | |
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.EmbedFullFonts = 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 kontrolować osadzanie czcionek podstawowych i standardowych czcionek Windows
Czcionki podstawowe i czcionki Windows Standard to “standardowe” zestawy czcionek, które zwykle znajdują się na komputerze docelowym lub są dostarczane przez czytnik dokumentów, dlatego nie muszą być osadzane w wyjściowym pliku PDF. Nie osadzając tych czcionek, można zmniejszyć rozmiar renderowanych dokumentów PDF, zachowując jednocześnie przenośność.
Aspose.Words udostępnia opcje wyboru sposobu eksportowania czcionek do formatu PDF. Możesz osadzić podstawowe i standardowe czcionki w wyjściowym pliku PDF lub pominąć ich osadzanie i zamiast tego użyć standardowych podstawowych czcionek PDF lub czcionek systemowych na komputerze docelowym. Użycie którejkolwiek z tych opcji zwykle powoduje znaczne zmniejszenie rozmiaru pliku dokumentów PDF generowanych przez Aspose.Words.
- Ponieważ te opcje wzajemnie się wykluczają, należy wybierać tylko jedną na raz.
- Podczas zapisywania zgodnie ze standardem PDF/A-1 wszystkie użyte czcionki muszą być osadzone w dokumencie PDF. Podczas zapisywania z tą zgodnością właściwość UseCoreFonts musi być ustawiona na false, a właściwość FontEmbeddingMode musi być ustawiona na EmbedAll.
Osadzanie podstawowych czcionek
Opcję osadzania czcionek Core można włączyć lub wyłączyć za pomocą właściwości UseCoreFonts. Jeśli jest ustawiona na true, następujące najpopularniejsze czcionki “True Type” (czcionki Base 14) nie są osadzane w wyjściowym dokumencie PDF:
Arial
Times New Roman
Courier New
Symbol
Czcionki te są zastępowane odpowiednimi czcionkami podstawowymi typu 1, które są dostarczane przez czytnik po otwarciu pliku PDF.
Poniższy przykład pokazuje, jak ustawić Aspose.Words, aby uniknąć osadzania podstawowych czcionek i pozwolić czytelnikowi zastąpić je czcionkami PDF Type 1:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// The path to the documents directory. | |
string dataDir = RunExamples.GetDataDir_RenderingAndPrinting(); | |
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.UseCoreFonts = 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); |
Ponieważ przeglądarki plików PDF udostępniają podstawowe czcionki na dowolnej obsługiwanej platformie, opcja ta jest również przydatna, gdy wymagana jest większa przenośność dokumentów. Jednak podstawowe czcionki mogą wyglądać inaczej niż czcionki systemowe.
Osadzanie czcionek systemowych
Tę opcję można włączyć lub wyłączyć za pomocą właściwości FontEmbeddingMode. Jeśli ta właściwość jest ustawiona na EmbedNonstandard, czcionki typu true “Arial” i “Times New Roman” nie są osadzane w dokumencie PDF. W tym przypadku przeglądarka kliencka korzysta z czcionek zainstalowanych w systemie operacyjnym klienta. Gdy właściwość FontEmbeddingMode jest ustawiona na EmbedNone, Aspose.Words nie osadza żadnych czcionek.
Poniższy przykład pokazuje, jak ustawić Aspose.Words tak, aby pomijał osadzanie czcionek Arial i Times New Roman w dokumencie PDF:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET | |
// Load the document to render. | |
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.FontEmbeddingMode = PdfFontEmbeddingMode.EmbedNone; | |
// The output PDF will be saved without embedding standard windows fonts. | |
doc.Save(dataDir + "Rendering.DisableEmbedWindowsFonts.pdf"); |
Ten tryb jest najbardziej przydatny, gdy chcesz przeglądać dokumenty na tej samej platformie, zachowując dokładny wygląd czcionek w wyjściowym pliku PDF.