ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7365|回复: 13

[求助] PDF文本输出的相关问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-30 21:34 | 显示全部楼层 |阅读模式
期待高手们能出手


Adobe Acrobat OLE方法图.jpg

Adobe Acrobat OLE对象.rar

430.33 KB, 下载次数: 280

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. '打开PDF文件,并选中文本
  2.    Dim objAcroApp As New Acrobat.AcroApp
  3.     Dim objAcroAVDoc As New Acrobat.AcroAVDoc
  4.     Dim lRet As Long


  5.     lRet = objAcroApp.Show

  6.     lRet = objAcroAVDoc.Open(路径+测试文件1, "")

  7.     lRet = objAcroAVDoc.FindText(测试文本, 0, 1, 1)

  8.    

  9.     lRet = objAcroAVDoc.ShowTextSelect()
  10.    


  11.     lRet = objAcroAVDoc.Close(1)


  12.     lRet = objAcroApp.Hide
  13.     lRet = objAcroApp.Exit


  14.     Set objAcroAVDoc = Nothing
  15.     Set objAcroApp = Nothing
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:46 | 显示全部楼层
  1. 'pdf生成txt
  2. Sub cmd_imp()
  3. Dim PDF_Path As String
  4. PDF_Path = "C:\222.PDF"
  5. Call Imp_Into_TXT(PDF_Path)
  6. End Sub

  7. Sub Imp_Into_TXT(PDF_File As String)

  8. Dim AC_PD As Acrobat.AcroPDDoc
  9. Dim AC_Hi As Acrobat.AcroHiliteList
  10. Dim AC_PG As Acrobat.AcroPDPage
  11. Dim AC_PGTxt As Acrobat.AcroPDTextSelect
  12. Dim WS_PDF As Worksheet
  13. Dim RW_Ct As Long
  14. Dim Col_Num As Integer
  15. Dim Li_Row As Long
  16. Dim Yes_Fir As Boolean
  17. Li_Row = Rows.Count
  18. Dim Ct_Page As Long
  19. Dim i As Long, j As Long, k As Long
  20. Dim T_Str As String
  21. Dim Hld_Txt As Variant
  22. RW_Ct = 0
  23. Col_Num = 1
  24. Application.ScreenUpdating = False
  25. Set AC_PD = New Acrobat.AcroPDDoc
  26. Set AC_Hi = New Acrobat.AcroHiliteList
  27. AC_Hi.Add 0, 32767
  28. Dim str$
  29. 文件保存路径 = ThisWorkbook.Path & ""
  30. TXT文件路径 = Dir(文件保存路径 & "" & "文档第" & i & "页.txt")


  31. With AC_PD
  32.     .Open PDF_File
  33.     Ct_Page = .GetNumPages
  34.     If Ct_Page = -1 Then
  35.         MsgBox PDF_File & "        文件错误"
  36.         .Close
  37.         GoTo h_end
  38.     End If
  39.     Set WS_PDF = Worksheets("Sheet1")

  40.     For i = 1 To Ct_Page
  41.         Set AC_PG = .AcquirePage(i - 1)
  42.         Set AC_PGTxt = AC_PG.CreateWordHilite(AC_Hi)
  43.         
  44.         T_Str = ""
  45.         If Not AC_PGTxt Is Nothing Then
  46.             With AC_PGTxt
  47.             Debug.Print .GetNumText
  48.                 For j = 0 To .GetNumText - 1
  49.                     T_Str = T_Str & .GetText(j)
  50.                 Next j
  51.             End With
  52.         End If

  53.         Open 文件保存路径 & "" & "文档第" & i & "页.txt" For Output As #1
  54.         If Len(str) > 0 Then Print #1, str
  55.         Print #1, T_Str;
  56.         Close #1
  57.     Next i
  58.     .Close
  59. End With
  60.             
  61. Application.ScreenUpdating = True
  62. MsgBox "转换完毕"
  63. h_end:

  64. Set WS_PDF = Nothing
  65. Set AC_PGTxt = Nothing
  66. Set AC_PG = Nothing
  67. Set AC_Hi = Nothing
  68. Set AC_PD = Nothing
  69.       
  70.       
  71. End Sub

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:51 | 显示全部楼层
  1. '获取文档当前选择工具   
  2.     'Acrobat 4,5,6 版本
  3. '    Dim objAcroApp   As Acrobat.CAcroApp
  4. '    Set objAcroApp   = CreateObject("AcroExch.App")
  5.    
  6.     'Acrobat 7,8,9,10,11 版本
  7.     Dim objAcroApp   As New Acrobat.AcroApp

  8.    
  9.     Dim strName As String
  10.    
  11.     strName = objAcroApp.GetActiveTool()
  12.    
  13.     MsgBox "GetActiveTool Name = (" & strName & ")"
  14.     Set objAcroApp = Nothing
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. '获取安装Acrobat的语言
  2.     'Acrobat 4,5,6 版本
  3. '    Dim objAcroApp   As Acrobat.CAcroApp
  4. '    Set objAcroApp   = CreateObject("AcroExch.App")
  5. '
  6.     'Acrobat 7,8,9,10,11 版本
  7.     Dim objAcroApp   As New Acrobat.AcroApp

  8.    
  9.     Dim strLanguage As String
  10.     Debug.Print objAcroApp.GetLanguage
  11.     Select Case objAcroApp.GetLanguage
  12.         Case "JPN"
  13.             strLanguage = "Japanes (日語)"
  14.         Case "DEU"
  15.             strLanguage = "German (德语)"
  16.         Case "ENU"
  17.             strLanguage = "English (英语)"
  18.         Case "ESP"
  19.             strLanguage = "Spanish (西班牙语)"
  20.         Case "FRA"
  21.             strLanguage = "French (法语)"
  22.         Case "ITA"
  23.             strLanguage = "Italian (意大利语)"
  24.         Case "NLD"
  25.             strLanguage = "Dutch (荷兰语)"
  26.         Case "SVE"
  27.             strLanguage = "Swedish (瑞典语)"
  28.         Case "CHS"
  29.             strLanguage = "简体中文"
  30.         Case Else
  31.             strLanguage = "其他语言"
  32.     End Select
  33.    
  34.     MsgBox "Acrobat Langauge=" & strLanguage
  35.     Set objAcroApp = Nothing
  36.    
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:53 | 显示全部楼层
  1. 获取当前打开pdf文档数量
  2.     'Acrobat 4,5,6 版本
  3. '    Dim objAcroApp    As Acrobat.CAcroApp
  4. '    Set objAcroApp    = CreateObject("AcroExch.App")
  5. '
  6.     'Acrobat 7,8,9,10,11 版本
  7.     Dim objAcroApp    As New Acrobat.AcroApp
  8.     Dim lCnt As Long

  9.     lCnt = objAcroApp.GetNumAVDocs
  10.     MsgBox "PDF Count=" & lCnt

  11. Set objAcroApp = Nothing
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 21:55 | 显示全部楼层
关闭所有打开的PDF文档
'    Acrobat 4,5,6 版本
'    Dim objAcroApp    As Acrobat.CAcroApp
'    Set objAcroApp    = CreateObject("AcroExch.App")
'
'   Acrobat 7,8,9,10,11 版本
    Dim objAcroApp As New Acrobat.AcroApp
   
   
    Dim lRet As Long    '返回
    lRet = objAcroApp.Show
   
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit
    Set objAcroApp = Nothing

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 22:00 | 显示全部楼层
添加水印
Dim pdApp As Acrobat.AcroApp
Dim pdDoc As Acrobat.AcroPDDoc
Dim pdPage As Acrobat.AcroPDPage
Dim jso As Object

Set pdApp = CreateObject("AcroExch.App")
Set pdDoc = CreateObject("AcroExch.PDDoc")

pdDoc.Open ("c:\1.pdf")
Set jso = pdDoc.GetJSObject
jso.addWatermarkFromText ("水印")

pdDoc.Save 1, "c:\4.pdf"
pdDoc.Close
Set pdDoc = Nothing
Set pdApp = Nothing

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 22:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Option Explicit

  2. 'Win32 API

  3. 'Public Const HKEY_CLASSES_ROOT = &H80000000
  4. 'Public Const HKEY_CURRENT_USER = &H80000001
  5. 'Public Const HKEY_CURRENT_CONFIG = &H80000005
  6. Public Const HKEY_LOCAL_MACHINE = &H80000002
  7. 'Public Const HKEY_LOCAL_MACHINE = &H80000002
  8. 'Public Const HKEY_USERS = &H80000003
  9. 'Public Const ERROR_SUCCESS = 0&

  10. Type VS_FIXEDFILEINFO
  11.     dwSignature        As Long
  12.     dwStrucVersion     As Long
  13.     dwFileVersionMS    As Long
  14.     dwFileVersionLS    As Long
  15.     dwProductVersionMS As Long
  16.     dwProductVersionLS As Long
  17.     dwFileFlagsMask    As Long
  18.     dwFileFlags        As Long
  19.     dwFileOS           As Long
  20.     dwFileType         As Long
  21.     dwFileSubtype      As Long
  22.     dwFileDateMS       As Long
  23.     dwFileDateLS       As Long
  24. End Type


  25. Public Declare Function RegCloseKey Lib "ADVAPI32" _
  26.     (ByVal hKey&) As Long


  27. Public Declare Function RegOpenKeyEx Lib "ADVAPI32" _
  28.     Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, _
  29.     ByVal ulOptions&, ByVal samDesired&, phkResult&) As Long


  30. Public Declare Function RegQueryValueExstr Lib "ADVAPI32" _
  31.     Alias "RegQueryValueExA" (ByVal hKey&, _
  32.     ByVal lpValueName$, ByVal lpReserved&, ByVal lpType&, _
  33.     ByVal lpdata$, lpcbData&) As Long


  34. Public Declare Function GetFileVersionInfoSize Lib _
  35.     "Version.dll" Alias "GetFileVersionInfoSizeA" _
  36.     (ByVal lptstrFilename As String, lpdwHandle As Long) _
  37.     As Long


  38. Public Declare Function GetFileVersionInfo Lib "Version.dll" _
  39.     Alias "GetFileVersionInfoA" _
  40.     (ByVal lptstrFilename As String, ByVal dwHandle As Long, _
  41.     ByVal dwLen As Long, lpdata As Any) As Long
  42.    
  43. Public Declare Function VerQueryValue Lib "Version.dll" _
  44.     Alias "VerQueryValueA" (pBlock As Any, _
  45.     ByVal lpSubBlock As String, lplpBuffer As Any, _
  46.     puLen As Long) As Long
  47.    
  48. Public Declare Sub MoveMemory Lib "kernel32.dll" _
  49.     Alias "RtlMoveMemory" (Destination As Any, _
  50.     Source As Any, ByVal Length As Long)


  51. Public Declare Sub Sleep Lib "kernel32.dll" _
  52.     (ByVal dwMilliseconds As Long)



  53. Private Sub 查看Acrobat安装路径和版本()

  54.     Const CON_APP = "Acrobat"

  55.     Dim strAcrobatPath  As String
  56.     Dim strVersion      As String
  57.     Dim strMsg          As String
  58.    

  59.     Call Get_Adobe_App_Info_nnn2(CON_APP, _
  60.         strAcrobatPath, strVersion, strMsg)
  61.    
  62.     Debug.Print "AcrobatPath    ='" & strAcrobatPath & "'" & vbCrLf & _
  63.                 "Acrobat Version='" & strVersion & "'"

  64.    
  65.    
  66. End Sub


  67. Public Function Get_Adobe_App_Info_nnn2( _
  68.             ByVal strApp As String, _
  69.             ByRef strPath As String, _
  70.             ByRef strVersion As String, _
  71.             ByRef strMsg As String) As Boolean
  72.    
  73. On Error GoTo Err_Get_Adobe_App_Info_nnn2:
  74.    
  75.     Dim strFileVersion      As String
  76.     Dim strProductVersion   As String
  77.     Dim strSubKey           As String
  78.     Dim strRootKey          As String
  79.     Dim InstallPathReg      As Long
  80.     Dim lLength             As Long
  81.     Dim lRet                As Long
  82.     Dim strName             As String
  83.    
  84.     strMsg = ""
  85.     strRootKey = HKEY_LOCAL_MACHINE
  86.     If strApp = "Acrobat" Then

  87.         strSubKey = "SOFTWARE\Microsoft\Windows" & _
  88.             "CurrentVersion\App Paths\Acrobat.exe"
  89.     Else

  90.         strSubKey = "SOFTWARE\Microsoft\Windows" & _
  91.             "CurrentVersion\App Paths\AcroRd32.exe"
  92.     End If
  93.    

  94.     lRet = RegOpenKeyEx(strRootKey, strSubKey, 0, 1, _
  95.         InstallPathReg)
  96.    

  97.     strPath = String(250, Chr(0))
  98.     lLength = Len(strPath)
  99.    

  100.     strName = ""
  101.     lRet = RegQueryValueExstr(InstallPathReg, strName, _
  102.         0, 0, strPath, lLength)
  103.    

  104.     strPath = Trim$(Replace(strPath, Chr(0), " "))
  105.     If strPath = "" Then

  106.         strMsg = "Not Found Adobe apllication"
  107.         strVersion = vbNullString
  108.         Exit Function
  109.     End If
  110.    

  111.     strPath = Left$(strPath, InStr(strPath, ".exe") + 3)
  112.    

  113.     Call RegCloseKey(InstallPathReg)



  114.     Dim lngSizeOfVersionInfo  As Long
  115.     Dim lngDummyHandle        As Long
  116.     Dim bytDummyVersionInfo() As Byte
  117.     Dim lngPointerVersionInfo As Long
  118.     Dim lnglLengthVersionInfo As Long
  119.     Dim udtVSFixedFileInfo    As VS_FIXEDFILEINFO


  120.     lngSizeOfVersionInfo = GetFileVersionInfoSize(strPath, _
  121.                                 lngDummyHandle)
  122.    

  123.     ReDim bytDummyVersionInfo(lngSizeOfVersionInfo - 1)
  124.    

  125.     lRet = GetFileVersionInfo(strPath, 0, _
  126.         lngSizeOfVersionInfo, bytDummyVersionInfo(0))
  127.    

  128.     lRet = VerQueryValue(bytDummyVersionInfo(0), "", _
  129.         lngPointerVersionInfo, lnglLengthVersionInfo)
  130.    

  131.     MoveMemory udtVSFixedFileInfo, _
  132.         ByVal lngPointerVersionInfo, Len(udtVSFixedFileInfo)
  133.    
  134.     With udtVSFixedFileInfo

  135.         strFileVersion = _
  136.             CStr((.dwFileVersionMS \ 2 ^ 16) And &HFFFF&) & "." & _
  137.             CStr(.dwFileVersionMS And &HFFFF&) & "." & _
  138.             CStr((.dwFileVersionLS \ 2 ^ 16) And &HFFFF&) & "." & _
  139.             CStr(.dwFileVersionLS And &HFFFF&)
  140.         

  141.         strProductVersion = _
  142.             CStr((.dwProductVersionMS \ 2 ^ 16) And &HFFFF&) & "." & _
  143.             CStr(.dwProductVersionMS And &HFFFF&) & "." & _
  144.             CStr((.dwProductVersionLS \ 2 ^ 16) And &HFFFF&) & "." & _
  145.             CStr(.dwProductVersionLS And &HFFFF&)
  146.             
  147.         strVersion = CStr((.dwProductVersionMS \ 2 ^ 16) And &HFFFF&)
  148.         
  149.     End With
  150.    

  151.     Get_Adobe_App_Info_nnn2 = True
  152.     Exit Function
  153.    
  154. Err_Get_Adobe_App_Info_nnn2:
  155.     strMsg = "Run Time Error" & vbCrLf & Err.Number & _
  156.         vbCrLf & Err.Description
  157.     Get_Adobe_App_Info_nnn2 = False
  158. End Function




复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-10-30 22:06 | 显示全部楼层
  1.     获取页面尺寸
  2.     Dim objAcroAVDoc    As New Acrobat.AcroAVDoc
  3.     Dim objAcroPDDoc    As Acrobat.AcroPDDoc
  4.     Dim objAcroPDPage   As Acrobat.AcroPDPage
  5.     Dim objAcroPoint    As Acrobat.AcroPoint
  6.     Dim lRet            As Long
  7.    

  8.     lRet = objAcroAVDoc.Open(测试文件1, "")

  9.     Set objAcroPDDoc = objAcroAVDoc.GetPDDoc

  10.     Set objAcroPDPage = objAcroPDDoc.AcquirePage(0)
  11.     Set objAcroPoint = objAcroPDPage.GetSize
  12.    
  13.     Debug.Print "objAcroPoint.x=" & objAcroPoint.x
  14.     Debug.Print "objAcroPoint.y=" & objAcroPoint.y
  15.    

  16.     lRet = objAcroAVDoc.Close(1)
  17.    

  18.     Set objAcroPoint = Nothing
  19.     Set objAcroPDPage = Nothing
  20.     Set objAcroPDDoc = Nothing
  21.     Set objAcroAVDoc = Nothing
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-18 14:46 , Processed in 0.044781 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表