Foxtable(狐表)用户栏目专家坐堂 → [求助]PDF分解为图片


  共有3210人关注过本帖树形打印复制链接

主题:[求助]PDF分解为图片

帅哥哟,离线,有人找我吗?
有点甜
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 11:41:00 [显示全部帖子]

1、

 

100页、100页这样获取图片。获取完100页以后,把_pdfWrapper注释掉dispose,重新打开pdf,再获取100页。

 

2、加上 doEvents 的代码

 

http://www.foxtable.com/webhelp/scr/1476.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 13:05:00 [显示全部帖子]

For i As Integer = 1 To _pdfWrapper.PageCount                                     '遍历PDF的页数
    If i Mod 100 = 0 Then
        _pdfWrapper.dispose

        _pdfWrapper = Nothing

        gc.collect
        _pdfWrapper = 重新打开某个pdf文件
    End If

    pcb.Image = _pdfWrapper.Pages(i).GetBitmap(pcb.Width, pcb.Height,True)        '获取每页图片
Next

[此贴子已经被作者于2018/4/19 13:05:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 14:41:00 [显示全部帖子]

改成

 

For i As Integer = 1 To _pdfWrapper.PageCount                                     '遍历PDF的页数   
    If i Mod 10 = 0 Then
        _pdfWrapper.dispose
        _pdfWrapper = Nothing
        gc.collect
        _pdfWrapper.LoadPDF(path1)
    End If
    do until _pdfWrapper isnot nothing
        Application.DoEvents
    loop


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 16:38:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:pdf转图片.table


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/20 16:54:00 [显示全部帖子]

请在8楼的例子上测试。如果有问题,请把pdf和项目发上来测试。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/20 17:43:00 [显示全部帖子]

参考代码

 

'--------------------------------------------------以下分解PDF为图片
If e.Form.Controls("TextBox1").text <> "" Then      'PDF文件已获取
    Dim Pdfv As new PDFView.ConvertPDF.PDFConvert
    Dim pcb As WinForm.PictureBox = e.form.Controls("照片")
    Dim path1 As String = e.Form.Controls("TextBox1").text                            '获取的PDF文件路径
    Dim finfo As new FileInfo(path1)
    For i As Integer = 1 To _pdfWrapper.PageCount                                     '遍历PDF的页数
        'If i Mod 20 = 0 Then
        '_pdfWrapper.dispose
        '_pdfWrapper = Nothing
        'gc.collect
        '_pdfWrapper = new PDFLibNet.PDFWrapper()
        '_pdfWrapper.LoadPDF(path1)
        'End If
       
        Dim path As String = ProjectPath & "Attachments\" & "PDF" & finfo.Name.substring(0,finfo.Name.LastIndexOf(".")) & "-" & i & ".jpg"      '为每页图片命名并存储
       
        _pdfWrapper.ExportJpg(path, i, i, 72, 90) '路径,页数,页数,dpi,质量
        Do While _pdfWrapper.IsJpgBusy = True
           
            Threading.Thread.Sleep(100)
        Loop
        Dim inf As new FileInfo(path)
        Dim ndr As DataRow = DataTables("图片列表").addnew                             '将图片信息写入表(通过表事件写入ListView1)
        ndr("全路径") = path
        ndr("文件名") = inf.Name
        ndr("时间") = Date.Now
    Next
Else
    Return
End If

'Dim lvw As WinForm.ListView = Forms("文字识别").Controls("ListView1")
''lvw.CheckBoxes = True
'lvw.AllowDrag = True '允许拖动行
'lvw.AllowDrop = True '允许接收拖动过来的行
'
'lvw.StopRedraw() '暂停绘制
'lvw.Rows.Clear() '清除原来的行
'lvw.Images.Clear() '清除原来的图片
'lvw.View = ViewMode.LargeIcon '显示模式为 大图标
'lvw.Images.LargeSize = New Size(70,99) '定义大图标尺寸
'For Each dr As DataRow In DataTables("图片列表").DataRows '从数据表中提取数据
'Dim Key As String = dr("文件名") '获取此员工的照片文件
'lvw.Images.AddLargeImage(Key, Key) '添加照片,直接用文件名作为图片键值
'Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() '增加一行
'vr.Text = dr("文件名")  '设置标题
'vr.ImageKey = Key '设置图片键值
'Next
'lvw.ResumeRedraw() '恢复绘制


 回到顶部