استخراج تصاویر داخل یک فایل pdf با استفاده از کتابخانه iTextSharp
نویسنده: ابوالفضل رجب پور
تاریخ: ۱۳۹۴/۰۵/۱۰ ۱۵:۳۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
var pdfReader = new PdfReader(pdfFile);
for (var pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)
{
var pdf = new PdfReader(pdfFile);
var pg = pdf.GetPageN(pageNumber);
// process page
} var pdf = new PdfReader(pdfFile);
var pg = pdf.GetPageN(pageNumber);
var res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
var xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
if (xobj == null) continue;
foreach (var name in xobj.Keys)
{
var obj = xobj.Get(name);
if (obj.IsIndirect())
{
// process obj ...
}
} var tg = (PdfDictionary)PdfReader.GetPdfObject(obj); var width = tg.Get(PdfName.WIDTH).ToString(); var height = tg.Get(PdfName.HEIGHT).ToString(); ImageRenderInfo imgRi = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);
private void RenderImage(ImageRenderInfo renderInfo, string imgPath)
{
var image = renderInfo.GetImage();
using (var dotnetImg = image.GetDrawingImage())
{
if (dotnetImg == null) return;
using (var ms = new MemoryStream())
{
dotnetImg.Save(ms, ImageFormat.Jpeg);
var d = new Bitmap(dotnetImg);
d.Save(imgPath);
}
}
} private void ExtractImage(string pdfFile, string imgPath)
{
var fileCounter = 0;
var pdfReader = new PdfReader(pdfFile);
for (var pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)
{
var pdf = new PdfReader(pdfFile);
var pg = pdf.GetPageN(pageNumber);
var res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
var xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
if (xobj == null) continue;
foreach (var name in xobj.Keys)
{
var obj = xobj.Get(name);
if (obj.IsIndirect())
{
var tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
var width = tg.Get(PdfName.WIDTH).ToString();
var height = tg.Get(PdfName.HEIGHT).ToString();
var imgRi = ImageRenderInfo.CreateForXObject(new Matrix(float.Parse(width), float.Parse(height)), (PRIndirectReference)obj, tg);
fileCounter++;
RenderImage(imgRi, imgPath + fileCounter + ".jpeg");
}
}
}
} var path = @"C:\"; var fileName = "1.pdf"; var outPath = path + fileName + @"_extractedImgs\"; Directory.CreateDirectory(outPath); ExtractImage(path + fileName, outPath);