Convertir PDF en formats d'images

Aspose.PDF for Java vous permet de convertir des documents PDF en formats d’image tels que BMP, JPEG, GIF, PNG, EMF, TIFF et SVG en utilisant deux approches. La conversion est effectuée en utilisant Device et en utilisant SaveOption.

Il existe plusieurs classes dans la bibliothèque qui vous permettent d’utiliser un dispositif virtuel pour transformer des images. DocumentDevice est orienté pour la conversion de l’ensemble du document, mais ImageDevice - pour une page particulière.

Convertir un PDF en utilisant la classe DocumentDevice

Aspose.PDF for Java permet de convertir des pages PDF en images TIFF.

La classe TiffDevice vous permet de convertir des pages PDF en images TIFF. Cette classe fournit une méthode nommée Process qui vous permet de convertir toutes les pages d’un fichier PDF en une seule image TIFF.

Convertir les pages PDF en une image TIFF unique

Aspose.PDF pour Java explique comment convertir toutes les pages d’un fichier PDF en une seule image TIFF :

  1. Créez un objet de la classe Document.
  2. Appelez la méthode Process pour convertir le document.
  3. Pour définir les propriétés du fichier de sortie, utilisez la classe TiffSettings.

Le code suivant montre comment convertir toutes les pages PDF en une seule image TIFF.

// Ouvrir le document
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

// Créer un objet Resolution
Resolution resolution = new Resolution(300);

// Créer un objet TiffSettings
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.None);
tiffSettings.setDepth(ColorDepth.Default);
tiffSettings.setShape(ShapeType.Landscape);
tiffSettings.setSkipBlankPages(false);

// Créer un appareil TIFF
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

// Convertir une page particulière et enregistrer l'image dans un flux
tiffDevice.process(document, DATA_DIR + "AllPagesToTIFF_out.tif");

Convertir une page unique en image TIFF

Aspose.PDF pour Java permet de convertir une page particulière d’un fichier PDF en une image TIFF, en utilisant une version surchargée de la méthode Process(..) qui prend un numéro de page en argument pour la conversion. L’extrait de code suivant montre comment convertir la première page d’un PDF au format TIFF.

// Ouvrir le document
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
String tiffFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF_out.tif").toString();
Document document = new Document(documentFileName);

// Créer un objet Resolution
Resolution resolution = new Resolution(300);

// Créer un objet TiffSettings
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.None);
tiffSettings.setDepth(ColorDepth.Default);
tiffSettings.setShape(ShapeType.Landscape);

// Créer un périphérique TIFF
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);

// Convertir une page particulière et enregistrer l'image dans le flux
tiffDevice.process(document, 1, 1, tiffFileName);

Utiliser l’algorithme de Bradley pendant la conversion

Aspose.PDF pour Java prend en charge la fonctionnalité de conversion de PDF en TIFF en utilisant la compression LZW, puis avec l’utilisation d’AForge, la binarisation peut être appliquée. Cependant, l’un des clients a demandé que pour certaines images, ils aient besoin d’obtenir le seuil en utilisant Otsu, donc ils aimeraient également utiliser Bradley.

// Ouvrir le document
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

String outputImageFileName = Paths.get(DATA_DIR.toString(), "resultant_out.tif").toString();
String outputBinImageFileName = Paths.get(DATA_DIR.toString(), "tiff-bin_out.tif").toString();

java.io.OutputStream outputImageFile = new java.io.FileOutputStream(outputImageFileName);
java.io.OutputStream outputBinImageFile = new java.io.FileOutputStream(outputBinImageFileName);

// Créer un objet Resolution
Resolution resolution = new Resolution(300);
// Créer un objet TiffSettings
TiffSettings tiffSettings = new TiffSettings();
tiffSettings.setCompression(CompressionType.LZW);
tiffSettings.setDepth(ColorDepth.Format1bpp);

// Créer un dispositif TIFF
TiffDevice tiffDevice = new TiffDevice(resolution, tiffSettings);
// Convertir une page particulière et enregistrer l'image dans le flux
tiffDevice.process(document, outputImageFile);
outputImageFile.close();

// Créer un objet stream pour enregistrer l'image de sortie
java.io.InputStream inStream = new java.io.FileInputStream(outputImageFileName);
tiffDevice.binarizeBradley(inStream, outputBinImageFile, 0.1);

Convertir des Pages PDF en Images TIFF Pixelisées

Pour convertir toutes les pages d’un fichier PDF au format TIFF pixelisé, utilisez l’option Pixelated de IndexedConversionType

// Convertir des Pages PDF en Images TIFF Pixelisées
// Pour convertir toutes les pages d'un fichier PDF au format TIFF pixelisé, utilisez l'option Pixelated
// de IndexedConversionType.

// Ouvrir le document
String documentFileName = Paths.get(DATA_DIR.toString(), "PageToTIFF.pdf").toString();
Document document = new Document(documentFileName);

// Créer un objet stream pour enregistrer l'image de sortie
java.io.OutputStream imageStream = new java.io.FileOutputStream("Image.tiff");

// Créer un objet Resolution
com.aspose.pdf.devices.Resolution resolution = new com.aspose.pdf.devices.Resolution(300);

// Instanciation de l'objet TiffSettings
com.aspose.pdf.devices.TiffSettings tiffSettings = new com.aspose.pdf.devices.TiffSettings();

// définir la compression de l'image TIFF résultante
tiffSettings.setCompression(com.aspose.pdf.devices.CompressionType.CCITT4);
// définir la profondeur de couleur pour l'image résultante
tiffSettings.setDepth(com.aspose.pdf.devices.ColorDepth.Format4bpp);
// ignorer les pages blanches lors du rendu PDF en TIFF
tiffSettings.setSkipBlankPages(true);
// définir la luminosité de l'image
tiffSettings.setBrightness(.5f);

// définir le type de conversion indexé, la valeur par défaut est simple
tiffSettings.setIndexedConversionType(IndexedConversionType.Pixelated);

// Créer un objet TiffDevice avec une résolution particulière
TiffDevice tiffDevice = new TiffDevice(2480, 3508, resolution, tiffSettings);

// Convertir une page particulière (Page 1) et enregistrer l'image dans le flux
tiffDevice.process(document, 1, 1, imageStream);

// Fermer le flux
imageStream.close();

Convertir un PDF en utilisant la classe ImageDevice

ImageDevice est l’ancêtre de BmpDevice, JpegDevice, GifDevice, PngDevice et EmfDevice.

  • La classe BmpDevice vous permet de convertir des pages PDF en images BMP.

  • La classe EmfDevice vous permet de convertir des pages PDF en images EMF.

  • La classe JpegDevice vous permet de convertir des pages PDF en images JPEG.

  • La classe PngDevice vous permet de convertir des pages PDF en images PNG.

  • La classe GifDevice vous permet de convertir des pages PDF en images GIF.

Voyons comment convertir une page PDF en image.

La classe BmpDevice fournit une méthode nommée Process qui vous permet de convertir une page particulière du fichier PDF au format image BMP. Les autres classes ont la même méthode. Donc, si nous avons besoin de convertir une page PDF en image, nous devons simplement instancier la classe requise.

L’extrait de code suivant montre cette possibilité :

package com.aspose.pdf.examples.conversion;

import com.aspose.pdf.Document;
import com.aspose.pdf.devices.*;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Convertir PDF en Image.
 */
public final class ConvertPDFtoImage {
    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    private ConvertPDFtoImage() {

    }

    public static void run() throws IOException {
        runConvertPdfUsingImageDevice();
    }

    public static void runConvertPdfUsingImageDevice() throws IOException {
        // Créer un objet Résolution
        Resolution resolution = new Resolution(300);
        BmpDevice bmpDevice = new BmpDevice(resolution);
        JpegDevice jpegDevice = new JpegDevice(resolution);
        GifDevice gifDevice = new GifDevice(resolution);
        PngDevice pngDevice = new PngDevice(resolution);
        EmfDevice emfDevice = new EmfDevice(resolution);

        Document document = new Document(DATA_DIR + "ConvertAllPagesToBmp.pdf");

        convertPDFtoImages(bmpDevice, "bmp", document);
        convertPDFtoImages(jpegDevice, "jpeg", document);
        convertPDFtoImages(gifDevice, "gif", document);
        convertPDFtoImages(pngDevice, "png", document);
        convertPDFtoImages(emfDevice, "emf", document);
    }

    public static void convertPDFtoImages(
            ImageDevice imageDevice,
            String ext,
            Document document)
            throws IOException {
        for (int pageCount = 1; pageCount <= document.getPages().size(); pageCount++) {
            java.io.OutputStream imageStream = new java.io.FileOutputStream(
                    DATA_DIR + "image" + pageCount + "_out." + ext);
            // Convertir une page particulière et enregistrer l'image dans le flux
            imageDevice.process(document.getPages().get_Item(pageCount), imageStream);

            // Fermer le flux
            imageStream.close();
        }
    }
}

Convertir PDF en utilisant la classe SaveOptions

Cette partie de l’article vous montre comment convertir PDF en SVG en utilisant Java et la classe SaveOptions.

Scalable Vector Graphics (SVG) est une famille de spécifications d’un format de fichier basé sur XML pour les graphiques vectoriels bidimensionnels, à la fois statiques et dynamiques (interactifs ou animés). La spécification SVG est une norme ouverte qui est en développement par le World Wide Web Consortium (W3C) depuis 1999.

Les images SVG et leurs comportements sont définis dans des fichiers texte XML. Cela signifie qu’elles peuvent être recherchées, indexées, scriptées et, si nécessaire, compressées. En tant que fichiers XML, les images SVG peuvent être créées et éditées avec n’importe quel éditeur de texte, mais il est souvent plus pratique de les créer avec des programmes de dessin tels qu’Inkscape.

Convertir des pages PDF en images SVG

Aspose.PDF for Java prend en charge la fonctionnalité de conversion de fichiers PDF au format SVG. Pour accomplir cette exigence, la classe SvgSaveOptions a été introduite dans le package com.aspose.pdf. Instanciez un objet de SvgSaveOptions et passez-le comme second argument à la méthode Document.save(..).

Le code suivant montre les étapes pour convertir un fichier PDF en format SVG.

package com.aspose.pdf.examples.conversion;

import com.aspose.pdf.Document;
import com.aspose.pdf.SvgSaveOptions;

import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Convertir PDF en SVG.
 */
public class ConvertPDFtoSVG {
    // Le chemin vers le répertoire des documents.
    private static final Path DATA_DIR = Paths.get("/home/aspose/pdf-examples/Samples");

    private ConvertPDFtoSVG() {

    }

    public static void run() throws IOException {
        String pdfFileName = Paths.get(DATA_DIR.toString(), "input.pdf").toString();
        String svgFileName = Paths.get(DATA_DIR.toString(), "PDFToSVG_out.svg").toString();

        // Charger le document PDF
        Document document = new Document(pdfFileName);

        // Instancier un objet de SvgSaveOptions
        SvgSaveOptions saveOptions = new SvgSaveOptions();

        // Ne pas compresser l'image SVG dans une archive Zip
        saveOptions.setCompressOutputToZipArchive(false);

        // Enregistrer la sortie dans des fichiers SVG
        document.save(svgFileName, saveOptions);
        document.close();
    }
}