Convertire un documento in PDF

La capacità di convertire facilmente e in modo affidabile i documenti da un formato all’altro è una caratteristica fondamentale di Aspose.Words. Uno dei formati più popolari per la conversione è PDF-un formato a layout fisso, che conserva l’aspetto originale di un documento durante il rendering su varie piattaforme. Il termine “rendering” è usato in Aspose.Words per descrivere il processo di conversione di un documento in un formato di file impaginato o con il concetto di pagine.

Convertire un documento Word in PDF

La conversione da Word a PDF è un processo piuttosto complesso che richiede diverse fasi di calcolo. Aspose.Words layout engine imita il modo in cui il motore di layout di pagina di Microsoft Word funziona, rendendo i documenti di output di PDF il più vicino possibile a ciò che è possibile vedere in Microsoft Word.

Con Aspose.Words è possibile convertire in modo programmatico un documento dal formato DOC o DOCX a PDF senza utilizzare Microsoft Office. Questo articolo spiega come eseguire questa conversione.

Conversione di DOCX o DOC in PDF

La conversione dal formato del documento DOC o DOCX nel formato PDF in Aspose.Words è molto semplice e può essere eseguita con solo due righe di codice che:

  1. Caricare il documento in un oggetto Document utilizzando uno dei relativi costruttori specificando il nome del documento con la relativa estensione di formato.
  2. Richiamare uno dei metodi Document.Save sull’oggetto Document e specificare il formato di output desiderato come PDF immettendo un nome file con “.PDF " estensione.

Il seguente esempio di codice mostra come convertire un documento da DOCX a PDF utilizzando il metodo Save:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Document.docx");
doc.save(getArtifactsDir() + "BaseConversions.DocxToPdf.pdf");

È possibile scaricare il file modello di questo esempio da Aspose.Words GitHub.

Converti in diversi standard PDF

Aspose.Words fornisce l’enumerazione PdfCompliace per supportare la conversione di DOC o DOCX in vari standard di formato PDF (ad esempio PDF 1.7, PDF 1.5, ecc.).

Nell’esempio di codice seguente viene illustrato come convertire un documento in PDF 1.7 utilizzando PdfSaveOptions con conformità a PDF17:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Rendering.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions(); { saveOptions.setCompliance(PdfCompliance.PDF_17); }
doc.save(getArtifactsDir() + "WorkingWithPdfSaveOptions.ConversionToPdf17.pdf", saveOptions);

Converti immagini in PDF

La conversione in PDF non è limitata dai formati di documento Microsoft Word. Qualsiasi formato supportato da Aspose.Words, incluso quello creato a livello di programmazione, può anche essere convertito in PDF. Ad esempio, possiamo convertire immagini a pagina singola, come JPEG, PNG, BMP, EMF, o WMF, così come le immagini multipagina, come TIFF e GIF, a PDF.

L’esempio di codice seguente mostra come convertire le immagini JPEG e TIFF in PDF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
convertImageToPDF(getImagesDir() + "Logo.jpg", getArtifactsDir() + "BaseConversions.JpgToPdf.pdf");
convertImageToPDF(getImagesDir() + "Transparent background logo.png", getArtifactsDir() + "BaseConversions.PngToPdf.pdf");
convertImageToPDF(getImagesDir() + "Windows MetaFile.wmf", getArtifactsDir() + "BaseConversions.WmfToPdf.pdf");
convertImageToPDF(getImagesDir() + "Tagged Image File Format.tiff", getArtifactsDir() + "BaseConversions.TiffToPdf.pdf");
convertImageToPDF(getImagesDir() + "Graphics Interchange Format.gif", getArtifactsDir() + "BaseConversions.GifToPdf.pdf");
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
/**
* Converts an image to PDF using Aspose.Words for Java.
*
* @param inputFileName File name of input image file.
* @param outputFileName Output PDF file name.
* @throws Exception
*/
private void convertImageToPDF(String inputFileName, String outputFileName) throws Exception {
// Create Aspose.Words.Document and DocumentBuilder.
// The builder makes it simple to add content to the document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Load images from the disk using the appropriate reader.
// The file formats that can be loaded depends on the image readers available on the machine.
ImageInputStream iis = ImageIO.createImageInputStream(new File(inputFileName));
ImageReader reader = ImageIO.getImageReaders(iis).next();
reader.setInput(iis, false);
// Get the number of frames in the image.
int framesCount = reader.getNumImages(true);
// Loop through all frames.
for (int frameIdx = 0; frameIdx < framesCount; frameIdx++) {
// Insert a section break before each new page, in case of a multi-frame image.
if (frameIdx != 0)
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
// Select active frame.
BufferedImage image = reader.read(frameIdx);
// 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.
PageSetup ps = builder.getPageSetup();
ps.setPageWidth(ConvertUtil.pixelToPoint(image.getWidth()));
ps.setPageHeight(ConvertUtil.pixelToPoint(image.getHeight()));
// Insert the image into the document and position it at the top left corner of the page.
builder.insertImage(
image,
RelativeHorizontalPosition.PAGE,
0,
RelativeVerticalPosition.PAGE,
0,
ps.getPageWidth(),
ps.getPageHeight(),
WrapType.NONE);
}
if (iis != null) {
iis.close();
reader.dispose();
}
doc.save(outputFileName);
}

Per far funzionare questo codice, è necessario aggiungere riferimenti a Aspose.Words, Java.awt.immagine, e javax.pacchetti di classe imageio per il tuo progetto.

Riduci PDF Dimensione dell’output

Quando si salva su PDF, è possibile specificare se si desidera ottimizzare l’output. Per fare ciò, è necessario impostare il flag OptimizeOutput su true, quindi verranno rimosse le tele nidificate ridondanti e le tele vuote, i glifi vicini con la stessa formattazione verranno concatenati.

Il seguente esempio di codice mostra come ottimizzare l’output:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Rendering.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions(); { saveOptions.setOptimizeOutput(true); }
doc.save(getArtifactsDir() + "WorkingWithPdfSaveOptions.OptimizeOutput.pdf", saveOptions);

Vedi anche