使用 PDFSharp 提取PDF文件中的图片
最近准备重写某个程序,想实现从PDF文件中提取页面内图片的功能。
搜索了半天,发现能轻松从PDF页面中提取图片的类库要么是收费的,要么得花巨大的学习成本才能使用这类免费类库……
又花了大半天的时间学习PDFSharp的用法,发现实在太复杂自己根本搞不定,正准备放弃的时候,我才发现原来已经有人写过一个
使用方法很简单,使用 nuget 安装
https://www.nuget.org/packages/PDFSharp/
https://www.nuget.org/packages/PDFSharp.Extensions/
PDFSharp 与 PDFSharp.Extensions 使用 MIT授权,您可以放心在任何项目中使用该类库!
搜索了半天,发现能轻松从PDF页面中提取图片的类库要么是收费的,要么得花巨大的学习成本才能使用这类免费类库……
又花了大半天的时间学习PDFSharp的用法,发现实在太复杂自己根本搞不定,正准备放弃的时候,我才发现原来已经有人写过一个
PDFSharp.Extensions
的PDFSharp扩展类库,可以帮助我们轻松地从PDF中提取图片。使用方法很简单,使用 nuget 安装
PDFSharp
与 PDFSharp.Extensions
这两个类库,或者手动下载它们:https://www.nuget.org/packages/PDFSharp/
https://www.nuget.org/packages/PDFSharp.Extensions/
PDFSharp 与 PDFSharp.Extensions 使用 MIT授权,您可以放心在任何项目中使用该类库!
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
' 获取所有图片
Shared Function getPdfImages(pdfPath As String) As Image()
Dim pdfDoc = PdfReader.Open(pdfPath)
Dim ret = pdfDoc.GetImages().ToArray() '就是这么简单
pdfDoc.Dispose()
Return ret
End Function
' 从指定页面中提取图片
Shared Function getPdfImages(pdfPath As String, index As Integer) As Image()
'index -= 1 '如果你想序列从1而非0开始
Dim pdfDoc = PdfReader.Open(pdfPath)
If index < 0 OrElse index >= pdfDoc.PageCount Then Return Nothing
Dim page = pdfDoc.Pages(index)
Dim ret = page.GetImages().ToArray() '就是这么简单
pdfDoc.Dispose()
Return ret
End Function
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。