【发布时间】:2015-07-10 00:58:42
【问题描述】:
我正在尝试使用以下代码从 PDF 中提取图像。它适用于 DCTDecode 等某些过滤器,但不适用于 JPXDEcode。“参数无效”错误发生在点 image.GetDrawingImage() 被调用。
using System.Drawing.Imaging;
using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
...
PdfReader pdf = new PdfReader(currfilename);
PdfReaderContentParser parser = new PdfReaderContentParser(pdf);
ImageRender listener = new ImageRender();
for (int i = 1; i <= pdf.NumberOfPages; i++)
{
try
{
parser.ProcessContent(i, listener);//calls RenderImage() at this point
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
public void RenderImage(ImageRenderInfo renderInfo)
{
PdfImageObject image = renderInfo.GetImage();
PdfName filter = image.Get(PdfName.FILTER) as PdfName;
if (renderInfo.GetRef() != null && image != null)
{
using (System.Drawing.Image dotnetImg = image.GetDrawingImage())//exception occurs at this point
{
if (dotnetImg != null)
{
ImageNames.Add(string.Format("{0}.tiff", renderInfo.GetRef().Number));
using (MemoryStream ms = new MemoryStream())
{
dotnetImg.Save(ms, ImageFormat.Tiff);
Images.Add(ms.ToArray());
}
}
}
}
}
我尝试了这些链接以寻求解决方案
Extract images using iTextSharp
Extract Image from a particular page in PDF
并且能够使用 PdfReader.GetStreamBytesRaw() 函数提取原始图像字节,但“参数无效”异常总是发生在调用 System.Drawing.Image.FromStream(memory stream) 的位置。
我也检查了这个链接"Parameter is not valid" exception from System.Drawing.Image.FromStream() method,但找不到任何有用的东西。
请帮忙
【问题讨论】:
标签: image pdf filter itextsharp