最近准备重写某个程序,想实现从PDF文件中提取页面内图片的功能。
搜索了半天,发现能轻松从PDF页面中提取图片的类库要么是收费的,要么得花巨大的学习成本才能使用这类免费类库……
又花了大半天的时间学习PDFSharp的用法,发现实在太复杂自己根本搞不定,正准备放弃的时候,我才发现原来已经有人写过一个 PDFSharp.Extensions 的PDFSharp扩展类库,可以帮助我们轻松地从PDF中提取图片。

使用方法很简单,使用 nuget 安装 PDFSharpPDFSharp.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