2012-04-12 38 views

Respuesta

7

iText/iTextSharp puede generar y/o modificar los archivos PDF existentes pero no realizar ninguna prestación que es lo que busca. Recomiendo consultar Ghostscript o alguna otra biblioteca que sepa cómo renderizar un PDF.

5

puede utilizar ImageMagick convertir PDF a imagen

convertido -Densidad 300 "d: \ 1.pdf" -scale @ 1500000 "d: \ a.jpg"

y dividir pdf puede utilizar iTextSharp

aquí está el código de otros.

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(); 

     } 
    } 
+2

"ImageMagick no puede manejarse archivos PostScript y PDF y por su propia cuenta. Para esto, utiliza un software de terceros llamado Ghostscript como 'delegado'. " http://stackoverflow.com/a/6599718/893350 –

3

Puede utilizar Ghostscript para convertir los archivos PDF en imágenes, que utilizarán los siguientes parámetros para convertir el PDF necesarios para la imagen TIFF en múltiples marcos:

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

También se puede utilizar el - q parámetro de modo silencioso puede obtener más información acerca de sus dispositivos de salida de here

Después de que puedo cargar fácilmente los marcos tiff como la siguiente

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]); 
} 
-3

se puede extraer de la imagen de PDF y guardar como JPG aquí es el código de ejemplo necesita itext agudo

public IEnumerable<System.Drawing.Image> ExtractImagesFromPDF(string sourcePdf) 
    { 
     // NOTE: This will only get the first image it finds per page. 
     var pdf = new PdfReader(sourcePdf); 
     var raf = new RandomAccessFileOrArray(sourcePdf); 

     try 
     { 
      for (int pageNum = 1; pageNum <= pdf.NumberOfPages; pageNum++) 
      { 
       PdfDictionary pg = pdf.GetPageN(pageNum); 

       // recursively search pages, forms and groups for images. 
       PdfObject obj = ExtractImagesFromPDF_FindImageInPDFDictionary(pg); 
       if (obj != null) 
       { 
        int XrefIndex = Convert.ToInt32(((PRIndirectReference)obj).Number.ToString(CultureInfo.InvariantCulture)); 
        PdfObject pdfObj = pdf.GetPdfObject(XrefIndex); 
        PdfStream pdfStrem = (PdfStream)pdfObj; 
        PdfImageObject pdfImage = new PdfImageObject((PRStream)pdfStrem); 
        System.Drawing.Image img = pdfImage.GetDrawingImage(); 
        yield return img; 
       } 
      } 
     } 
     finally 
     { 
      pdf.Close(); 
      raf.Close(); 
     } 
    } 
+1

¿Qué es ExtractImagesFromPDF_FindImageInPDFDictionary – JDPeckham

+0

@JDPeckham Creo que una función personalizada de las siguientes dos se encuentra en https: //carra-lucia-ltd.co.uk/2014/12/09/save-images-from-pdf-files-using-itextsharp/ – Stephan

Cuestiones relacionadas