Especifique as opções de renderização ao converter para PDF

O formato PDF é um formato de página fixa muito popular entre os usuários e amplamente suportado por vários aplicativos, porque um documento PDF tem a mesma aparência em qualquer dispositivo. Por esse motivo, a conversão para PDF é um recurso importante do Aspose.Words.

PDF é um formato complexo. Várias etapas de cálculos são necessárias no processo de conversão de um documento para PDF, incluindo o cálculo do layout. Como esses estágios incluem cálculos complexos, eles consomem muito tempo. Além disso, o formato PDF é bastante complexo por si só. Possui estrutura de arquivos específica, modelo gráfico e incorporação de fontes. Além disso, apresenta algumas funcionalidades de saída complexas, como tags de estrutura de documentos, criptografia, assinaturas digitais e formulários editáveis.

O mecanismo de layout Aspose.Words imita a forma como o mecanismo de layout de página do Microsoft Word funciona. Portanto, Aspose.Words faz com que os documentos de saída em PDF pareçam o mais próximo possível do que você pode ver em Microsoft Word. Às vezes é necessário especificar opções adicionais, o que pode afetar o resultado de salvar um documento no formato PDF. Essas opções podem ser especificadas pelo uso da classe PdfSaveOptions, contendo as propriedades que determinam como a saída do PDF será exibida.

Alguns exemplos de uso de PdfSaveOptions são fornecidos abaixo.

Criando um documento PDF com formulários preenchíveis

Também é possível exportar formulários preenchíveis de um documento Microsoft Word para um PDF de saída, que possui formulários preenchíveis em vez de texto simples. Use a propriedade PreserveFormFields para salvar um documento como PDF com formulários preenchíveis.

Observe que, diferentemente do Microsoft Word, o formato PDF possui um número limitado de opções para formulários editáveis, como caixa de texto, caixa de combinação e caixa de seleção. Microsoft Word possui mais tipos de formulários, por exemplo, seletor de data de calendário. Geralmente, não é possível imitar totalmente o comportamento do Microsoft Word em PDF. Portanto, em alguns casos complexos, a saída do PDF pode ser diferente do que você vê no Microsoft Word.

O exemplo de código abaixo mostra como salvar um documento como PDF com formulários preenchíveis com compactação e qualidade JPEG especificadas:

// 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);

Exportando estrutura do documento e propriedades personalizadas

A propriedade [https://reference.aspose.com/words/net/aspose.words. saving/pdfsaveoptions/properties/exportdocumentstructure) permite exportar a estrutura do documento para saída em PDF.

Os recursos de estrutura lógica do PDF fornecem um mecanismo para incorporar informações relacionadas à estrutura do conteúdo do documento em um arquivo PDF. Aspose.Words preserva informações sobre a estrutura de um documento Microsoft Word, como parágrafos, listas, tabelas, notas de rodapé/notas finais, etc.

O exemplo a seguir demonstra como salvar um documento no formato PDF, preservando a estrutura do documento:

// 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 também permite exportar propriedades personalizadas de documentos para PDF, o que é demonstrado pelo exemplo a seguir:

// 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);

Exportando contornos de marcadores e títulos em PDF de saída

Se quiser exportar marcadores como contornos no PDF de saída, você pode usar a propriedade DefaultBookmarksOutlineLevel. Esta propriedade especifica o nível padrão na estrutura do documento, no qual os marcadores Microsoft Word são exibidos. Se o documento contiver marcadores no cabeçalho/rodapé do documento, você poderá definir a propriedade HeaderFooterBookmarksExportMode como First ou All para especificar como eles serão exportados no PDF de saída. Os marcadores em cabeçalhos/rodapés não são exportados quando o valor de HeaderFooterBookmarksExportMode é None.

O exemplo de código abaixo mostra como exportar marcadores do primeiro cabeçalho/rodapé de uma seção:

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

O PDF de saída deste exemplo é mostrado abaixo:

specify-rendering-options-when-converting-to-pdf_1

Quando HeaderFooterBookmarksExportMode é definido como First e o documento tem cabeçalhos/rodapés pares e ímpares ou um cabeçalho/rodapé de primeira página diferente, os marcadores são exportados para os primeiros cabeçalhos/rodapés exclusivos em uma seção.

Você também pode exportar títulos no PDF de saída, usando a propriedade HeadingsOutlineLevels. Esta propriedade especifica quantos níveis de títulos estão incluídos na estrutura de tópicos do documento.

O exemplo de código abaixo mostra como exportar títulos com três níveis:

// 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);

O PDF de saída deste exemplo é mostrado abaixo:

specify-rendering-options-when-converting-to-pdf_2

Redução da resolução de imagens para reduzir o tamanho do documento

Aspose.Words oferece a capacidade de reduzir a resolução de imagens para reduzir o tamanho do PDF de saída, usando a propriedade DownsampleOptions. A redução da resolução é habilitada por padrão na propriedade DownsampleImages.

Observe que também é possível definir uma resolução específica na propriedade Resolution ou um limite de resolução na propriedade ResolutionThreshold. No segundo caso, se a resolução da imagem for inferior ao valor limite, a redução da resolução não será aplicada.

O exemplo de código abaixo mostra como alterar a resolução das imagens em um documento PDF de saída:

// 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);

A resolução é calculada de acordo com o tamanho real da imagem na página.

Incorporação de fontes no formato Adobe PDF

Aspose.Words também permite controlar como as fontes são incorporadas nos documentos PDF resultantes. As fontes precisam ser incorporadas em qualquer documento Adobe PDF para garantir que o documento possa ser renderizado corretamente em qualquer máquina (veja mais detalhes sobre renderização de fontes na seção Usando fontes TrueType). Por padrão, o Aspose.Words incorpora um subconjunto de fontes usadas no documento no PDF gerado. Neste caso, apenas os glyphs (caracteres) utilizados no documento são salvos em PDF.

Quando usar fontes completas e quando subconjunto

Existe uma maneira de especificar uma opção para o Aspose.Words incorporar fontes completas. Mais detalhes, juntamente com algumas vantagens e desvantagens de cada configuração estão descritos na tabela abaixo.

Modo Incorporar Fontes Vantagens Desvantagens
Full Útil quando você deseja editar o PDF resultante posteriormente, adicionando ou modificando o texto. Todas as fontes estão incluídas, portanto, todos os glyphs estão presentes. Como algumas fontes são grandes (vários megabytes), incorporá-las sem subconjuntos pode resultar em arquivos de saída grandes.
Subset A criação de subconjuntos é útil se você quiser manter o tamanho do arquivo de saída menor.

O usuário não pode adicionar ou editar totalmente o texto usando a fonte subconjunto no documento PDF de saída. Isso ocorre porque nem todos os glyphs da fonte estão presentes.

Se vários PDFs forem salvos com fontes subconjuntos e reunidos, o documento PDF combinado poderá ter uma fonte contendo muitos subconjuntos desnecessários.

|

Incorporando fontes completas em PDF

A propriedade EmbedFullFonts permite especificar como o Aspose.Words incorpora fontes em um documento PDF de saída.

  • Para incorporar fontes completas no documento PDF de saída, defina EmbedFullFonts como true
  • Para criar subconjuntos de fontes ao salvar em PDF, defina EmbedFullFonts como false

O exemplo a seguir demonstra como incorporar fontes completas no documento PDF de saída:

// 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);

O exemplo a seguir demonstra como configurar Aspose.Words para subconjunto de fontes no PDF de saída:

// 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);

Como controlar a incorporação de fontes principais e fontes padrão Windows

Fontes principais e fontes Windows Standard são os conjuntos “padrão” de fontes, que geralmente estão presentes na máquina de destino ou fornecidas pelo leitor de documentos, portanto, não precisam ser incorporados no PDF de saída. Ao não incorporar essas fontes, você pode diminuir o tamanho dos documentos PDF renderizados e ainda manter a portabilidade.

Aspose.Words oferece opções para escolher como as fontes são exportadas para PDF. Você pode optar por incorporar fontes principais e padrão no PDF de saída ou ignorar a incorporação e usar fontes PDF principais padrão ou fontes do sistema na máquina de destino. Usar qualquer uma dessas opções normalmente resulta em uma redução significativa no tamanho do arquivo para documentos PDF gerados por Aspose.Words.

  • Como essas opções são mutuamente exclusivas, você deve escolher apenas uma de cada vez.
  • Ao salvar em conformidade com PDF/A-1, todas as fontes usadas devem ser incorporadas ao documento PDF. Ao salvar com esta conformidade, a propriedade UseCoreFonts deve ser definida como false e a propriedade FontEmbeddingMode deve ser definida como EmbedAll.

Incorporando fontes principais

A opção de incorporar fontes Core pode ser habilitada ou desabilitada usando a propriedade UseCoreFonts. Quando definido como true, as seguintes fontes “True Type” mais populares (fontes Base 14) não são incorporadas no documento PDF de saída:

  • Arial
  • Times New Roman
  • Courier New
  • Symbol

Essas fontes são substituídas pelas fontes principais Tipo 1 correspondentes, que são fornecidas por um leitor quando o PDF é aberto.

O exemplo fornecido abaixo mostra como configurar Aspose.Words para evitar a incorporação de fontes principais e permitir que o leitor as substitua por fontes PDF Tipo 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);

Como os visualizadores de PDF fornecem fontes básicas em qualquer plataforma suportada, esta opção também é útil quando é necessária maior portabilidade de documentos. No entanto, as fontes principais podem ser diferentes das fontes do sistema.

Incorporando fontes do sistema

Esta opção pode ser habilitada ou desabilitada usando a propriedade FontEmbeddingMode. Quando esta propriedade está definida como EmbedNonstandard, as fontes do tipo true “Arial” e “Times New Roman” não são incorporadas em um documento PDF. Nesse caso, o visualizador do cliente depende das fontes instaladas no sistema operacional do cliente. Quando a propriedade FontEmbeddingMode é definida como EmbedNone, o Aspose.Words não incorpora nenhuma fonte.

O exemplo abaixo mostra como configurar o Aspose.Words para ignorar a incorporação de fontes Arial e Times New Roman em um documento 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");

Este modo é mais útil quando você deseja visualizar seus documentos na mesma plataforma, preservando a aparência exata das fontes no PDF de saída.