Convertir PDF en formats d'images

Aspose.PDF pour PHP vous permet de convertir des documents PDF en formats d’images 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 pour PHP rend possible la conversion de 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 PHP 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.

// Charger le document PDF
$document = new Document($inputFile);

// Créer un nouvel objet TiffSettings
$tiffSettings = new devices_TiffSettings();

// Décommentez les lignes suivantes pour personnaliser les paramètres TIFF
// $tiffSettings->setCompression(devices_CompressionType::$NoneNone);
// $tiffSettings->setDepth(devices_ColorDepth::$DefaultDefault);
// $tiffSettings->setShape(devices_ShapeType::$Portrait);
// $tiffSettings->setSkipBlankPages(false);

// Définir la résolution pour l'image TIFF
$resolution = new devices_Resolution(300);

// Créer un nouvel objet TiffDevice avec la résolution et les paramètres spécifiés
$tiffDevice = new devices_TiffDevice($resolution, $tiffSettings);

// Convertir le document PDF en TIFF à l'aide du TiffDevice
$tiffDevice->process($document, $outputFile);

Convertir une seule page en image TIFF

Aspose.PDF pour PHP 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 comme argument pour la conversion. Le code suivant montre comment convertir la première page d’un PDF en format TIFF.

// Charger le document PDF
$document = new Document($inputFile);

// Créer un nouvel objet TiffSettings
$tiffSettings = new devices_TiffSettings();

// Décommenter les lignes suivantes pour personnaliser les paramètres TIFF
// $tiffSettings->setCompression(devices_CompressionType::$NoneNone);
// $tiffSettings->setDepth(devices_ColorDepth::$DefaultDefault);
// $tiffSettings->setShape(devices_ShapeType::$Portrait);
// $tiffSettings->setSkipBlankPages(false);

// Définir la résolution pour l'image TIFF
$resolution = new devices_Resolution(300);

// Créer un nouvel objet TiffDevice avec la résolution et les paramètres spécifiés
$tiffDevice = new devices_TiffDevice($resolution, $tiffSettings);

// Convertir le document PDF en TIFF en utilisant le TiffDevice
$tiffDevice->process($document, 1, 1, $outputFile);

Utiliser l’algorithme de Bradley pendant la conversion

Aspose.PDF pour PHP 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.

// Créer un nouvel objet TiffSettings
$tiffSettings = new devices_TiffSettings();

// Décommentez les lignes suivantes pour personnaliser les paramètres TIFF
// $tiffSettings->setCompression(devices_CompressionType::$NoneNone);
// $tiffSettings->setDepth(devices_ColorDepth::$DefaultDefault);
// $tiffSettings->setShape(devices_ShapeType::$Portrait);
// $tiffSettings->setSkipBlankPages(false);

$outputImageFile = new java("java.io.FileOutputStream", $outputImageFileName);
$outputBinImageFile = new java("java.io.FileOutputStream", $outputBinImageFileName);

// Définir la résolution pour l'image TIFF
$resolution = new devices_Resolution(300);

// Créer un nouvel objet TiffDevice avec la résolution et les paramètres spécifiés
$tiffDevice = new devices_TiffDevice($resolution, $tiffSettings);

// Convertir le document PDF en TIFF en utilisant le TiffDevice
$tiffDevice->process($document, 1, 1, $outputFile);

// Créer un objet de flux pour sauvegarder l'image de sortie
$inStream = new java("java.io.FileInputStream",$outputImageFileName);
$tiffDevice->binarizeBradley($inStream, $outputBinImageFile, 0.1);

Convertir les 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

// Créez un nouvel objet TiffSettings
$tiffSettings = new devices_TiffSettings();

// Décommentez les lignes suivantes pour personnaliser les paramètres TIFF
// $tiffSettings->setCompression(devices_CompressionType::$NoneNone);
// $tiffSettings->setDepth(devices_ColorDepth::$DefaultDefault);
// $tiffSettings->setShape(devices_ShapeType::$Portrait);
// $tiffSettings->setSkipBlankPages(false);
// régler la luminosité de l'image
$tiffSettings->setBrightness(0.5f);
// définir le type de conversion indexée, la valeur par défaut est simple
$tiffSettings->setIndexedConversionType(IndexedConversionType::Pixelated);


$outputImageFile = new java("java.io.FileOutputStream", $outputImageFileName);
$outputBinImageFile = new java("java.io.FileOutputStream", $outputBinImageFileName);

// Définir la résolution pour l'image TIFF
$resolution = new devices_Resolution(300);

// Créez un nouvel objet TiffDevice avec la résolution et les paramètres spécifiés
$tiffDevice = new devices_TiffDevice($resolution, $tiffSettings);

// Convertissez le document PDF en TIFF en utilisant le TiffDevice
$tiffDevice->process($document, 1, 1, $outputFile);

// Créez un objet de flux pour enregistrer l'image de sortie
$inStream = new java("java.io.FileInputStream",$outputImageFileName);
$tiffDevice->binarizeBradley($inStream, $outputBinImageFile, 0.1);

Convertir 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 en format d’image BMP. Les autres classes ont la même méthode. Donc, si nous devons convertir une page PDF en image, nous devons simplement instancier la classe requise.

L’extrait de code suivant montre cette possibilité :

// Charger le document PDF
$document = new Document($inputFile);

// Obtenir la collection de pages dans le document
$pages = $document->getPages();

// Obtenir le nombre total de pages dans le document
$count = $pages->size();

// Définir la résolution pour les images PNG
$resolution = new devices_Resolution(300);

// Créer un nouveau périphérique PNG avec la résolution spécifiée
$imageDevice = new devices_PngDevice($resolution);

// Parcourir chaque page du document
for ($pageCount = 1; $pageCount <= $document->getPages()->size(); $pageCount++) {
    // Définir le nom de fichier image de sortie pour la page en cours
    $imageFileName = $imageFileNameTemplate . $pageCount . '.png';

    // Obtenir la page en cours de la collection
    $page = $document->getPages()->get_Item($pageCount);

    // Traiter la page en cours et l'enregistrer en tant qu'image PNG
    $imageDevice->process($page, $imageFileName);
}

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 un standard ouvert 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 que Inkscape.

Convertir des pages PDF en images SVG

Aspose.PDF pour PHP prend en charge la 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 deuxième argument à la méthode Document.save(..).

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

// Charger le document PDF
$document = new Document($inputFile);

// Créer une instance de la classe SvgSaveOptions
$saveOption = new SvgSaveOptions();

// Enregistrer le document PDF en tant que SVG
$document->save($outputFile, $saveOption);