2012-04-12 19 views

Odpowiedz

7

iText/iTextSharp może generować i/lub modyfikować istniejące pliki PDF, ale nie wykonuje żadnej rendering który jest to, czego szukasz. Polecam sprawdzić Ghostscript lub inną bibliotekę, która wie, jak faktycznie renderować plik PDF.

5

można użyć ImageMagick Konwersja PDF do obrazu

nawrócony -density 300 "D: \ 1.pdf" -scale @ 1500000 "D: \ a.jpg"

i PDF Split można używać iTextSharp

tutaj jest kod od innych.

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 nie może obsłużyć PostScript i PDF siebie i przez jego własny. W tym celu używa oprogramowania innej firmy o nazwie Ghostscript jako "delegata". " http://stackoverflow.com/a/6599718/893350 –

3

Można użyć Ghostscript do konwersji plików PDF na obrazy, użyłem następujące parametry konwersji potrzebne PDF do TIFF z wielu klatek:

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

Ponadto można użyć - Parametr q dla trybu dyskretnego Możesz uzyskać więcej informacji o swoich urządzeniach wyjściowych od here

Po tym można łatwo załadować ramki tiff, takie jak następujące

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

można wyodrębnić obraz z PDF i zapisać jako JPG oto przykładowy kod trzeba itext Ostry

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

co to jest ExtractImagesFromPDF_FindImageInPDFDictionary – JDPeckham

+0

@JDPeckham Myślę, że niestandardowa funkcja dwóch następnych znajduje się na https: //carra-lucia-ltd.co.uk/2014/12/09/save-images-from-pdf-files-using-itextsharp/ – Stephan

Powiązane problemy