Converter um documento em PDF

A capacidade de converter documentos de um formato para outro de maneira fácil e confiável é um recurso importante do Aspose.Words. Um dos formatos mais populares para conversão é o PDF – um formato de layout fixo, que preserva a aparência original de um documento durante sua renderização em diversas plataformas. O termo “renderização” é usado em Aspose.Words para descrever o processo de conversão de um documento em um formato de arquivo paginado ou que tenha o conceito de páginas.

Converter um documento do Word em PDF

A conversão de Word para PDF é um processo bastante complexo que requer várias etapas de cálculo. O mecanismo de layout Aspose.Words imita a forma como o mecanismo de layout de página do Microsoft Word funciona, fazendo com que os documentos de saída em PDF pareçam o mais próximo possível do que você pode ver no Microsoft Word.

Com o Aspose.Words você pode converter programaticamente um documento de formatos Word, como DOC ou DOCX, para PDF sem usar o Microsoft Office. Este artigo explica como realizar essa conversão.

Converta DOC ou DOCX para PDF

A conversão do formato de documento DOC ou DOCX para o formato PDF em Aspose.Words é muito fácil e pode ser realizada com apenas duas linhas de código que:

  1. Carregue seu documento em um objeto Document usando um de seus construtores, especificando o nome do documento com sua extensão de formato.
  2. Invoque um dos métodos Document.save no objeto Document e especifique o formato de saída desejado como PDF inserindo um nome de arquivo com a extensão “.PDF”.

O exemplo de código a seguir mostra como converter um documento DOCX em PDF usando o método save:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Document.docx")
doc.save(ARTIFACTS_DIR + "BaseConversions.docx_to_pdf.pdf")
view raw docx-to-pdf.py hosted with ❤ by GitHub

Você pode baixar o arquivo de modelo deste exemplo em Aspose.Words GitHub.

Converter para vários padrões PDF

Aspose.Words fornece a enumeração PdfCompliace para suportar a conversão de DOC ou DOCX em vários padrões de formato PDF (como PDF 1.7, PDF 1.5, etc.).

O exemplo de código a seguir demonstra como converter um documento em PDF 1.7 usando PdfSaveOptions compatível com PDF17:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Rendering.docx")
save_options = aw.saving.PdfSaveOptions()
save_options.compliance = aw.saving.PdfCompliance.PDF17
doc.save(ARTIFACTS_DIR + "WorkingWithPdfSaveOptions.conversion_to_pdf_17.pdf", save_options)

Converter imagens em PDF

A conversão para PDF não é restrita aos formatos de documento Microsoft Word. Qualquer formato suportado por Aspose.Words, inclusive criado programaticamente, também pode ser convertido para PDF. Por exemplo, podemos converter imagens de uma única página, como JPEG, PNG, BMP, EMF ou WMF, bem como imagens de várias páginas, como TIFF e GIF, em PDF.

O exemplo de código a seguir mostra como converter imagens JPEG e TIFF em PDF:

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
self.convert_image_to_pdf(IMAGES_DIR + "Logo.jpg",
ARTIFACTS_DIR + "BaseConversions.JpgToPdf.pdf")
self.convert_image_to_pdf(IMAGES_DIR + "Transparent background logo.png",
ARTIFACTS_DIR + "BaseConversions.PngToPdf.pdf")
self.convert_image_to_pdf(IMAGES_DIR + "Windows MetaFile.wmf",
ARTIFACTS_DIR + "BaseConversions.WmfToPdf.pdf")
self.convert_image_to_pdf(IMAGES_DIR + "Tagged Image File Format.tiff",
ARTIFACTS_DIR + "BaseConversions.TiffToPdf.pdf")
self.convert_image_to_pdf(IMAGES_DIR + "Graphics Interchange Format.gif",
ARTIFACTS_DIR + "BaseConversions.GifToPdf.pdf")
view raw image-to-pdf.py hosted with ❤ by GitHub
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
@staticmethod
def convert_image_to_pdf(input_file_name: str, output_file_name: str):
"""Converts an image to PDF using Aspose.Words for .NET.
:param input_file_name: File name of input image file.
:param output_file_name: Output PDF file name.
"""
print("Converting " + input_file_name + " to PDF...")
doc = aw.Document()
builder = aw.DocumentBuilder(doc)
# Read the image from file
with drawing.Image.from_file(input_file_name) as image:
# Find which dimension the frames in this image represent. For example
# the frames of a BMP or TIFF are "page dimension" whereas frames of a GIF image are "time dimension".
dimension = drawing.imaging.FrameDimension(image.frame_dimensions_list[0])
frames_count = image.get_frame_count(dimension)
for frame_idx in range(frames_count):
# Insert a section break before each new page, in case of a multi-frame TIFF.
if frame_idx != 0:
builder.insert_break(aw.BreakType.SECTION_BREAK_NEW_PAGE)
image.select_active_frame(dimension, frame_idx)
frame_stream = io.BytesIO()
image.save(frame_stream, drawing.imaging.ImageFormat.png)
# We want the size of the page to be the same as the size of the image.
# Convert pixels to points to size the page to the actual image size.
page_setup = builder.page_setup
page_setup.page_width = aw.ConvertUtil.pixel_to_point(image.width, image.horizontal_resolution)
page_setup.page_height = aw.ConvertUtil.pixel_to_point(image.height, image.vertical_resolution)
# Insert the image into the document and position it at the top left corner of the page.
builder.insert_image(
frame_stream,
aw.drawing.RelativeHorizontalPosition.PAGE,
0,
aw.drawing.RelativeVerticalPosition.PAGE,
0,
page_setup.page_width,
page_setup.page_height,
aw.drawing.WrapType.NONE)
doc.save(output_file_name)

Para fazer esse código funcionar, você precisa adicionar referências a Aspose.Words e aspose.pydrawing ao seu projeto.

Reduza o tamanho da saída do PDF

Ao salvar em PDF, você pode especificar se deseja otimizar a saída. Para fazer isso, você precisa definir o sinalizador optimize_output como true e, em seguida, as telas aninhadas redundantes e as telas vazias serão removidas e os glyphs vizinhos com a mesma formatação serão concatenados.

# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET.git.
doc = aw.Document(MY_DIR + "Rendering.docx")
save_options = aw.saving.PdfSaveOptions()
save_options.optimize_output = True
doc.save(ARTIFACTS_DIR + "PdfSaveOptions.OptimizeOutput.pdf", save_options)

Reduza o tamanho da saída do PDF

Ao salvar em PDF, você pode especificar se deseja otimizar a saída. Para fazer isso, você precisa definir o sinalizador optimize_output como true e, em seguida, as telas aninhadas redundantes e as telas vazias serão removidas e os glyphs vizinhos com a mesma formatação serão concatenados.

Veja também