Convertir un document en PDF
La possibilité de convertir facilement et de manière fiable des documents d’un format à un autre est une fonctionnalité clé de Aspose.Words. L’un des formats de conversion les plus populaires est le PDF, un format à mise en page fixe qui préserve l’apparence originale d’un document lors de son rendu sur diverses plates-formes. Le terme “rendu” est utilisé dans Aspose.Words pour décrire le processus de conversion d’un document dans un format de fichier paginé ou ayant le concept de pages.
Convertir un document Word en PDF
La conversion de Word en PDF est un processus assez complexe qui nécessite plusieurs étapes de calcul. Le moteur de mise en page Aspose.Words imite le fonctionnement du moteur de mise en page de Microsoft Word, ce qui rend les documents de sortie PDF aussi proches que possible de ce que vous pouvez voir dans Microsoft Word.
Avec Aspose.Words, vous pouvez convertir par programmation un document à partir de formats Word, tels que DOC ou DOCX, en PDF sans utiliser Microsoft Office. Cet article explique comment effectuer cette conversion.
Convertir DOC ou DOCX en PDF
La conversion du format de document DOC ou DOCX au format PDF en Aspose.Words est très simple et peut être réalisée avec seulement deux lignes de code qui:
- Chargez votre document dans un objet Document en utilisant l’un de ses constructeurs en spécifiant le nom du document avec son extension de format.
- Invoquez l’une des méthodes Document.save sur l’objet Document et spécifiez le format de sortie souhaité au format PDF en saisissant un nom de fichier avec l’extension “.PDF”.
L’exemple de code suivant montre comment convertir un document DOCX en PDF à l’aide de la méthode 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") |
Vous pouvez télécharger le fichier modèle de cet exemple depuis Aspose.Words GitHub.
Parfois, il est nécessaire de spécifier des options supplémentaires, ce qui peut affecter le résultat de l’enregistrement d’un document au format PDF. Ces options peuvent être spécifiées à l’aide de la classe PdfSaveOptions, contenant des propriétés qui déterminent la manière dont la sortie PDF sera affichée.
Notez qu’avec la même technique, vous pouvez convertir n’importe quel document au format de mise en page de flux au format PDF.
Convertir en diverses normes PDF
Aspose.Words fournit l’énumération PdfCompliace pour prendre en charge la conversion de DOC ou DOCX en divers standards de format PDF (tels que PDF 1.7, PDF 1.5, etc.).
L’exemple de code suivant montre comment convertir un document au format PDF 1.7 à l’aide de PdfSaveOptions avec conformité à 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 des images en PDF
La conversion au format PDF n’est pas limitée par les formats de document Microsoft Word. Tout format pris en charge par Aspose.Words, y compris créé par programme, peut également être converti en PDF. Par exemple, nous pouvons convertir des images d’une seule page, telles que JPEG, PNG, BMP, EMF ou WMF, ainsi que des images de plusieurs pages, telles que TIFF et GIF, en PDF.
L’exemple de code suivant montre comment convertir des images JPEG et TIFF en 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) |
Pour que ce code fonctionne, vous devez ajouter des références à Aspose.Words et aspose.pydrawing
à votre projet.
Réduire la taille de sortie du PDF
Lors de l’enregistrement au format PDF, vous pouvez spécifier si vous souhaitez optimiser la sortie. Pour ce faire, vous devez définir l’indicateur optimize_output sur true, puis les canevas imbriqués redondants et les canevas vides seront supprimés, les glyph voisins avec le même formatage seront concaténés.
# 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) |
Réduire la taille de sortie du PDF
Lors de l’enregistrement au format PDF, vous pouvez spécifier si vous souhaitez optimiser la sortie. Pour ce faire, vous devez définir l’indicateur optimize_output sur true, puis les canevas imbriqués redondants et les canevas vides seront supprimés, les glyph voisins avec le même formatage seront concaténés.
Voir également
- L’article Le rendu pour plus d’informations sur les formats de page fixe et de flow-layout
- L’article Conversion au format de page fixe pour plus d’informations sur la mise en page
- L’article Spécifier les options de rendu lors de la conversion au format PDF pour plus d’informations sur l’utilisation de la classe PdfSaveOptions