Convertir un documento a PDF
La capacidad de convertir documentos de un formato a otro de forma fácil y fiable es una característica clave de Aspose.Words. Uno de los formatos más populares para la conversión es PDF, un formato de diseño fijo que conserva la apariencia original de un documento durante su reproducción en varias plataformas. El término “renderizado” se utiliza en Aspose.Words para describir el proceso de convertir un documento a un formato de archivo paginado o que tiene el concepto de páginas.
Convertir un documento de Word a PDF
La conversión de Word a PDF es un proceso bastante complejo que requiere varias etapas de cálculo. El motor de diseño Aspose.Words imita la forma en que funciona el motor de diseño de página de Microsoft Word, haciendo que los documentos de salida PDF se parezcan lo más posible a lo que puede ver en Microsoft Word.
Con Aspose.Words puedes convertir mediante programación un documento de formatos de Word, como DOC o DOCX, a PDF sin utilizar Microsoft Office. Este artículo explica cómo realizar esta conversión.
Convierta DOC o DOCX a PDF
La conversión del formato de documento DOC o DOCX al formato PDF en Aspose.Words es muy fácil y se puede lograr con solo dos líneas de código que:
- Cargue su documento en un objeto Document usando uno de sus constructores especificando el nombre del documento con su extensión de formato.
- Invoque uno de los métodos Document.save en el objeto Document y especifique el formato de salida deseado como PDF ingresando un nombre de archivo con la extensión “.PDF”.
El siguiente ejemplo de código muestra cómo convertir un documento de DOCX a PDF utilizando el 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") |
Puede descargar el archivo de plantilla de este ejemplo desde Aspose.Words GitHub.
A veces es necesario especificar opciones adicionales, lo que puede afectar el resultado de guardar un documento como PDF. Estas opciones se pueden especificar mediante el uso de la clase PdfSaveOptions, que contiene propiedades que determinan cómo se mostrará la salida PDF.
Tenga en cuenta que con la misma técnica, puede convertir cualquier documento con formato de diseño fluido a formato PDF.
Convertir a varios estándares PDF
Aspose.Words proporciona la enumeración PdfCompliace para admitir la conversión de DOC o DOCX a varios estándares de formato PDF (como PDF 1.7, PDF 1.5, etc.).
El siguiente ejemplo de código demuestra cómo convertir un documento a PDF 1.7 usando PdfSaveOptions compatible con 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) |
Convertir imágenes a PDF
La conversión a PDF no está restringida por los formatos de documentos Microsoft Word. Cualquier formato compatible con Aspose.Words, incluido el creado mediante programación, también se puede convertir a PDF. Por ejemplo, podemos convertir imágenes de una sola página, como JPEG, PNG, BMP, EMF o WMF, así como imágenes de varias páginas, como TIFF y GIF, a PDF.
El siguiente ejemplo de código muestra cómo convertir imágenes JPEG y TIFF a 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") |
# 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 que este código funcione, debe agregar referencias a Aspose.Words y aspose.pydrawing
a su proyecto.
Reducir el tamaño de salida del PDF
Al guardar en PDF, puede especificar si desea optimizar la salida. Para hacer esto, debe establecer el indicador optimize_output en verdadero y luego se eliminarán los lienzos anidados redundantes y los lienzos vacíos y se concatenarán los glifos vecinos con el mismo formato.
# 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) |
Reducir el tamaño de salida del PDF
Al guardar en PDF, puede especificar si desea optimizar la salida. Para hacer esto, debe establecer el indicador optimize_output en verdadero y luego se eliminarán los lienzos anidados redundantes y los lienzos vacíos y se concatenarán los glifos vecinos con el mismo formato.
Ver también
- El artículo Representación para obtener más información sobre los formatos de página fija y diseño de flujo.
- El artículo “Conversión a formato de página fija” para más información sobre el diseño de la página.
- El artículo Especificar opciones de renderizado al convertir a PDF para más información sobre el uso de la clase PdfSaveOptions