web-dev-qa-db-fra.com

Enregistrer le pdf en jpg en utilisant c #

J'ai besoin de convertir un fichier pdf en jpeg en utilisant C #. Et la solution (bibliothèque) doit être gratuite.

J'ai cherché beaucoup d'informations, mais il semble que je ne reçois rien de clair.

J'ai déjà essayé itextsharp et pdfbox (mais cela, l'image pdf2 est uniquement pour Java, je pense) sans succès.

J'ai essayé d'extraire les images du pdf individuellement, mais j'ai une erreur de paramètres invalides quand j'essaye d'extraire les images ... Semble qu'ils ont un encodage étrange.

N'importe qui peut me recommander une bibliothèque pour enregistrer un pdf dans un jpeg? Les exemples seront également très appréciés.

Merci!


SOLUTION: Comment convertir un pdf en image en utilisant C #

  1. Accédez à: http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
  2. Télécharger la bibliothèque
  3. Suivez les étapes sur le Web
  4. Ajoutez votre code à votre application, comme ceci (très simple):

        //Transform pdf to jpg
        PdfToImage.PDFConvert pp = new PDFConvert();
        pp.OutputFormat = "jpeg"; //format
        pp.JPEGQuality = 100; //100% quality
        pp.ResolutionX = 300; //dpi
        pp.ResolutionY = 300;
        pp.FirstPageToConvert = 1; //pages you want
        pp.LastPageToConvert = 1;
        pp.Convert(PATH_PDF+ "report.pdf", PATH_IMAGE + "name.jpg");  
    
38
FrioneL

La bibliothèque pdfiumviewer pourrait être utile ici. Il est également disponible en pépite.

  1. Créez une nouvelle application Winforms. Ajoutez-y le "PdfiumViewer".
  2. Cela ajoutera également deux DLL natives nommées "pdfium.dll" dans les dossiers x86 et x64 à votre projet. Réglez "Copier dans le répertoire de sortie" sur "Copier toujours".
  3. Essayez le code suivant (changez les chemins en fonction de votre configuration).

        try
        {
            using (var document = PdfiumViewer.PdfDocument.Load(@"input.pdf"))
            {
                var image = document.Render(0, 300, 300, true);
                image.Save(@"output.png", ImageFormat.Png);
            }
        }
        catch (Exception ex)
        {
            // handle exception here;
        }
    

    Edit 2: Code modifié pour montrer que l'index de page est 0 basé comme indiqué dans le commentaire de S.C. ci-dessous

Édition 1: Solution mise à jour  Avez-vous essayé pdfsharp?

Ce lien pourrait être utile

22
Vijay Gill

Voici comment je l'ai fait avec PDFLibNet:

public void ConvertPDFtoHojas(string filename, String dirOut)
{
    PDFLibNet.PDFWrapper _pdfDoc = new PDFLibNet.PDFWrapper();
    _pdfDoc.LoadPDF(filename);

    for (int i = 0; i < _pdfDoc.PageCount; i++)
    {

        Image img = RenderPage(_pdfDoc, i);

        img.Save(Path.Combine(dirOut, string.Format("{0}{1}.jpg", i,DateTime.Now.ToString("mmss"))));

    }
    _pdfDoc.Dispose();
    return;
}
public  Image RenderPage(PDFLibNet.PDFWrapper doc, int page)
{
    doc.CurrentPage = page + 1;
    doc.CurrentX = 0;
    doc.CurrentY = 0;

    doc.RenderPage(IntPtr.Zero);

        // create an image to draw the page into
        var buffer = new Bitmap(doc.PageWidth, doc.PageHeight);
        doc.ClientBounds = new Rectangle(0, 0, doc.PageWidth, doc.PageHeight);
        using (var g = Graphics.FromImage(buffer))
        {
            var hdc = g.GetHdc();
            try
            {
                doc.DrawPageHDC(hdc);
            }
            finally
            {
                g.ReleaseHdc();
            }
        }
        return buffer;

}