c# - 如何使用 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。
解决方案
推荐阅读
- regex - 正则表达式匹配数字和马车
- playframework - 播放框架:play.data.Form
.fill(T value) 不填充表单 - javascript - Vue 功能日历 - 使用 v-model 动态设置 selectedDates
- php - 如何访问 php 关联数组值?
- javascript - 更改 JSON 数组中单个元素的颜色
- javascript - 如何让 Internet Explorer 使用 Window Post Message 跨域运行脚本
- sql - 通过获取最新数据加载删除重复值
- javascript - Vue.js (axios) 忽略 Django Set-Cookie 响应
- c++ - 在物理键盘上触发按键
- firebase - 您如何编写安全规则以确保用户只能向 Cloud Firestore 文档写入一次?