web-dev-qa-db-fra.com

Convertir des pages de fichiers Pdf en images avec itextsharp

Je veux convertir des pages Pdf en images en utilisant la bibliothèque ItextSharp.

Vous avez une idée de la façon de convertir chaque page en fichier image

20

iText/iTextSharp peut générer et/ou modifier des fichiers PDF existants mais ils n'effectuent aucun rendu, ce que vous recherchez. Je recommanderais de vérifier Ghostscript ou une autre bibliothèque qui sait réellement rendre un PDF.

11
Chris Haas

vous pouvez utiliser ImageMagick convertir le pdf en image

convert -density 300 "d:\1.pdf" -scale @ 1500000 "d:\a.jpg"

et le pdf divisé peut utiliser itextsharp

voici le code des autres.

void SplitePDF(string filepath)
    {
        iTextSharp.text.pdf.PdfReader reader = null;
        int currentPage = 1;
        int pageCount = 0;
        //string filepath_New = filepath + "\\PDFDestination\\";

        System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
        //byte[] arrayofPassword = encoding.GetBytes(ExistingFilePassword);
        reader = new iTextSharp.text.pdf.PdfReader(filepath);
        reader.RemoveUnusedObjects();
        pageCount = reader.NumberOfPages;
        string ext = System.IO.Path.GetExtension(filepath);
        for (int i = 1; i <= pageCount; i++)
        {
            iTextSharp.text.pdf.PdfReader reader1 = new iTextSharp.text.pdf.PdfReader(filepath);
            string outfile = filepath.Replace((System.IO.Path.GetFileName(filepath)), (System.IO.Path.GetFileName(filepath).Replace(".pdf", "") + "_" + i.ToString()) + ext);
            reader1.RemoveUnusedObjects();
            iTextSharp.text.Document doc = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(currentPage));
            iTextSharp.text.pdf.PdfCopy pdfCpy = new iTextSharp.text.pdf.PdfCopy(doc, new System.IO.FileStream(outfile, System.IO.FileMode.Create));
            doc.Open();
            for (int j = 1; j <= 1; j++)
            {
                iTextSharp.text.pdf.PdfImportedPage page = pdfCpy.GetImportedPage(reader1, currentPage);
                pdfCpy.SetFullCompression();
                pdfCpy.AddPage(page);
                currentPage += 1;
            }
            doc.Close();
            pdfCpy.Close();
            reader1.Close();
            reader.Close();

        }
    }
6
changcn

Vous pouvez utiliser Ghostscript pour convertir les fichiers PDF en images, j'ai utilisé les paramètres suivants pour convertir les PDF en images tiff nécessaires) avec plusieurs cadres:

gswin32c.exe   -sDEVICE=tiff12nc -dBATCH -r200 -dNOPAUSE  -sOutputFile=[Output].tiff [PDF FileName]

Vous pouvez également utiliser le paramètre -q pour le mode silencieux.Vous pouvez obtenir plus d'informations sur ses périphériques de sortie à partir de ici

Après cela, je peux facilement charger les images tiff comme suit

using (FileStream stream = new FileStream(@"C:\tEMP\image_$i.tiff", FileMode.Open, FileAccess.Read, FileShare.Read))
{
    BitmapDecoder dec = BitmapDecoder.Create(stream, BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.None);
    BitmapEncoder enc = BitmapEncoder.Create(dec.CodecInfo.ContainerFormat);
    enc.Frames.Add(dec.Frames[frameIndex]);
}
4
Amer Sawan