首页 > 解决方案 > 如何使用 iTextsharp 将 PDF 转换为图像?

问题描述

我使用了这段代码,但没有得到正确的格式图像。提供使用 iTextsharp 将 pdf 转换为图像的更好方法。

FileStream fs = File.OpenRead(ImagePath);
byte[] data = new byte[fs.Length];
fs.Read(data, 0, (int)fs.Length);
List<System.Drawing.Image> ImgList = new List<System.Drawing.Image>();

iTextSharp.text.pdf.RandomAccessFileOrArray RAFObj = null;
iTextSharp.text.pdf.PdfReader PDFReaderObj = null;
iTextSharp.text.pdf.PdfObject PDFObj = null;
iTextSharp.text.pdf.PdfStream PDFStremObj = null;
try
{
    RAFObj = new iTextSharp.text.pdf.RandomAccessFileOrArray(data);
    PDFReaderObj = new iTextSharp.text.pdf.PdfReader(RAFObj, null);

    for (int k = 0; k <= PDFReaderObj.XrefSize - 1; k++)
    {
        PDFObj = PDFReaderObj.GetPdfObject(k);
        if ((PDFObj != null) && PDFObj.IsStream())
        {
            PDFStremObj = (iTextSharp.text.pdf.PdfStream)PDFObj;
            iTextSharp.text.pdf.PdfObject subtype = PDFStremObj.Get(iTextSharp.text.pdf.PdfName.SUBTYPE);
            
            if ((subtype != null) && subtype.ToString() == iTextSharp.text.pdf.PdfName.IMAGE.ToString())
            {
                byte[] bytes = iTextSharp.text.pdf.PdfReader.GetStreamBytesRaw((iTextSharp.text.pdf.PRStream)PDFStremObj);
                if ((bytes != null))
                {
                    try
                    {
                         System.IO.MemoryStream MS = new System.IO.MemoryStream(bytes);
                         MS.Position = 0;
                        System.Drawing.Image ImgPDF = System.Drawing.Image.FromStream(MS);
                        ImgList.Add(ImgPDF);
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
    }
    PDFReaderObj.Close();
}
catch (Exception ex) { throw ex; }
}
                

上面的编码将文件从ImagePath使用FileStream到 pdfobject,然后从 memorystream 到 Image。

标签: c#itext

解决方案


推荐阅读