返回首页

错误的quot;参数不validquot的。|我用iTextSharp转换成PDF格式的图像。

当转到:System.Drawing.Image IMG = System.Drawing.Image.FromStream(memStream)

它有错误:参数无效

编辑 - 从OP的解决方案部分代码

这是代码,我希望你了解我的question.Thanks!


public static void ExtractImagesFromPDF(string sourcePdf, string outputPath)

{

    // NOTE:   This will only get the first image it finds per page.

    PdfReader pdf = new PdfReader(sourcePdf);

    RandomAccessFileOrArray raf = new iTextSharp.text.pdf.RandomAccessFileOrArray(sourcePdf);

 

    try

    {

        for (int pageNumber = 1; pageNumber <= pdf.NumberOfPages; pageNumber++)

        {

          PdfDictionary pg = pdf.GetPageN(pageNumber);

          PdfDictionary res =

          (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));

          PdfDictionary xobj =

          (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));

            if (xobj != null)

             {

               foreach (PdfName name in xobj.Keys)

               {

                 PdfObject obj = xobj.Get(name);

                  if (obj.IsIndirect())

                  {

                    PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);

                    PdfName type =

                    (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));

                      if (PdfName.IMAGE.Equals(type))

                      {

 

                      int XrefIndex = Convert.ToInt32(((PRIndirectReference)obj).Number.ToString(System.Globalization.CultureInfo.InvariantCulture));

                      PdfObject pdfObj = pdf.GetPdfObject(XrefIndex);

                      PdfStream pdfStrem = (PdfStream)pdfObj;

                      byte[] bytes = PdfReader.GetStreamBytesRaw((PRStream)pdfStrem);

                      if ((bytes != null))

                      {

                        using (System.IO.MemoryStream memStream = new System.IO.MemoryStream(bytes))

                        {

                          memStream.Position = 0;

                          System.Drawing.Image img = System.Drawing.Image.FromStream(memStream,true, false);

                          // must save the file while stream is open.

                           if (!Directory.Exists(outputPath))

                           Directory.CreateDirectory(outputPath);

 

                           string path = Path.Combine(outputPath, String.Format(@"{0}.jpg", pageNumber));

                           System.Drawing.Imaging.EncoderParameters parms = new System.Drawing.Imaging.EncoderParameters(1);

                           parms.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Compression, 0);

// GetImageEncoder is found below this method

                           System.Drawing.Imaging.ImageCodecInfo jpegEncoder = GetImageEncoder("JPEG");

                           img.Save(path, jpegEncoder, parms);

                           break;

请给我一个解决方案!
谢谢。

回答

评论会员: 时间:2
h