web-dev-qa-db-fra.com

Convertir PDF au format JPG ou PNG en utilisant C # ou la ligne de commande

J'ai besoin de convertir un fichier PDF en images. J'ai utilisé à des fins de test "Total PDF Converter" qui offre une ligne de commande, mais c'est un shareware et je dois trouver une alternative gratuite.

Est-ce que quelqu'un connaît un tel outil ou peut-être même une bibliothèque C # gratuite?

18
martinyyyy

L'outil convert (ou magickdepuis la version 7 ) de ImageMagick bundle peut le faire (et beaucoup plus).

Dans sa forme la plus simple, c'est juste

convert myfile.pdf myfile.png

ou

magick myfile.pdf myfile.png
20
Thomas

C'est une vieille question, mais comme une réponse GhostScript est manquante et qu'il n'y a pas d'indice pour l'exportation multipage PDF, je pense que l'ajout d'une autre variante est correct.

gs -dBATCH -dNOPAUSE -sDEVICE=pnggray -r300 -dUseCropBox -sOutputFile=item-%03d.png examples.pdf

Description des options:

  • dBatch et dNOPAUSE il suffit de dire à gs de fonctionner en mode batch, ce qui signifie plus ou moins, il ne posera aucune question. Ces paramètres sont également importants pour que vous puissiez exécuter la commande dans un script bash.
  • sDEVICE indique à gs le format de sortie à produire. pnggray est pour niveaux de gris, png16m pour une couleur RVB 24 bits. Si vous insistez pour créer Les fichiers JPEG utilisent -sDEVICE=jpeg pour produire des fichiers JPEG couleur. Utilisez le paramètre -dJPEGQ=N (N est un entier compris entre 0 et 100; le paramètre par défaut est 75) Pour contrôler la qualité Jpgeg.
  • -r300 définit la résolution de numérisation sur 300 ppp. Si vous préférez une taille de sortie plus petite, utilisez -r70 ou si vous saisissez pdf, utilisez une résolution élevée -r600. Si vous avez un PDF avec 300 dpi et spécifiez -r600, vos images seront redimensionnées.
  • -dUseCropBox indique à gs d'utiliser une CropBox si elle est définie. Un CropBox est Spécifie une zone d'intérêt sur une page. Si vous avez un pdf avec une marge blanche importante Et que vous ne souhaitez pas que cette marge apparaisse sur votre sortie, présentez-la Option pourrait aider.
  • -sOutputFile définit le nom du fichier de sortie. La partie% 03d.png Indique à gs d'inclure un compteur pour plusieurs fichiers. Un fichier PDF Sur deux pages donnerait deux fichiers nommés item-001.png et item-002.png.
  • Le dernier (paramètre non nommé est le fichier d'entrée.)

Disponibilité: La commande convert de imagemagick utilise la commande gs en interne. Si vous pouvez convertir un fichier PDF avec imagemagick, vous avez déjà installé gs.

Installer ghostscript:

RHEL:

yum install ghostscript

SLES:

zypper install ghostscript

Debian/Ubuntu:

Sudo apt-get install ghostscript

Les fenêtres:

Vous pouvez trouver les fichiers binaires Windows sous http://www.ghostscript.com/download/gsdnld.html

11
tobltobs

La question est assez ancienne, mais j'ai récemment trouvé cette solution qui fonctionnait pour moi: https://github.com/jhabjan/Ghostscript.NET . Il est également disponible en téléchargement sous forme de nuget. 

Voici l'exemple de code permettant de convertir toutes les pages PDF en images png:

    private static void Test()
    {
        var localGhostscriptDll = Path.Combine(Environment.CurrentDirectory, "gsdll64.dll");
        var localDllInfo = new GhostscriptVersionInfo(localGhostscriptDll);

        int desired_x_dpi = 96;
        int desired_y_dpi = 96;

        string inputPdfPath = "test.pdf";

        string outputPath = Environment.CurrentDirectory;

        GhostscriptRasterizer _rasterizer = new GhostscriptRasterizer();

        _rasterizer.Open(inputPdfPath, localDllInfo, false);

        for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
        {
            string pageFilePath = Path.Combine(outputPath, "Page-" + pageNumber.ToString() + ".png");

            Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
            img.Save(pageFilePath, ImageFormat.Png);
        }

        _rasterizer.Close();
    }
5

Vous voudrez peut-être vérifier cette solution gratuite

http://www.codeproject.com/Articles/32274/How-To-Convert-PDF-to-Image-Using-Ghostscript-API

Il convertit facilement les images PDF en fichiers (fichier unique ou fichiers multiples) Est open source et utilise ghostscript (téléchargement gratuit)

Exemple d'utilisation:

converter = new PDFConverter();
converter.JPEGQuality = 90;
converter.OutputFormat = "jpg";
string output = "output.jpg";
converter.Convert("input.pdf", output);
2
coldstar

Vous devriez utiliser iText Sharp. C'est un port d'un projet Java open source pour manipuler des PDF. http://sourceforge.net/projects/itextsharp/

1
Scott Adams

2JPEG outil de ligne de commande peut le faire, comme:

2jpeg.exe -src "C:\In\*. Pdf" -dst "C:\Out"

0
Mikhael Bolgov