注册 登录
编程论坛 VFP论坛

VFP如何获取PDF文件的页数

shschy 发布于 2024-06-01 14:15, 838 次点击
网上搜到以下方式,但无法实现。
1)请问如何在VFP里看对应ole的全称,比如EXCEL和WORD比较常见,PDF类的如何查看?


* 创建OLE对象连接到Adobe Acrobat
loOleObject = Createobject("Acrobat.Application")
loOleObject.ConnectToNewObject("Adobe Acrobat Ex 9.0 Type Library")
 
* 使用OLE对象打开PDF文件
lcFilePath = "D:\单据.pdf"
loOleObject.Open(lcFilePath)
 
* 获取PDF文档的页数
lnPageCount = loOleObject.GetNumPages()
 
* 显示页数
? "PDF页数: " , lnPageCount
 
* 关闭OLE对象
loOleObject.Close()
DESTROY loOleObject
8 回复
#2
csyx2024-06-01 16:42
试试
oo = CreateObject('AcroExch.PDDoc')
oo.Open(GetFile('pdf'))
? oo.GetNumPages()

#3
shschy2024-06-01 20:47
感谢 csyx指点,请进一步指点
看到您的回复,知道VFP可以调用类似对象访问PDF,上网搜AcroExch,获得以下信息。
但是没有具体详细参数,比如要打开一个pdf文件,并显示,无法做到。
参试:oAcrobatApp = CREATEOBJECT("AcroExch.App")
      oAcrobatApp.GetAVDoc("D:\单据.pdf") &&报错
      oAcrobatApp.show  &&可以显示

网上搜到
AcroExch是Adobe Acrobat的一个组件,它提供了一系列的API,可以用于控制和操作PDF文件。下面是一些常用的API:
1. AVDocOpen:打开一个PDF文件并返回一个AVDoc对象。
2. AVPageViewNew:创建一个新的AVPageView,用于显示PDF文件中的一页。
3. PDPageAcquirePage: 获取PDF页面并返回一个PDDoc对象。
4. PDDocOpen:打开一个PDF文档并返回一个PDDoc对象。
5. PDPageDrawContentsToWindow:将PDF页面内容绘制到指定的窗口中。
6. PDPageGetContents:获取指定PDF页面的内容。
7. AVDocClose:关闭一个AVDoc对象。
8. PDPageRelease:释放指定PDF页面。
9. PDDocClose:关闭一个PDDoc对象。
10. AVPageViewRelease:释放指定的AVPageView对象。
#4
nbwww2024-06-02 09:56
不清楚楼主具体的应用场景   
https://bbs.bccn.net/viewthread.php?tid=505200&highlight=pdf   
你可以看下这个贴6楼发的示例  
可以解决预览、打印等常用功能  
 页码当然也可以获取
#5
nbwww2024-06-02 10:00
当然现在有很多新的库 控件来解决
如吹版发的WebView2 其他如Miniblink等都可以

#6
csyx2024-06-02 19:43
不是想获取总页数吗,怎么又变成显示pdf了?

程序代码:
Local app as AcroExch.App
Local oo1 as AcroExch.AVDoc
Local oo2 as AcroExch.PDDoc

cc = GetFile('pdf')

oo1 = CreateObject('AcroExch.AVDoc')
oo1.Open(cc, '')
app = CreateObject('AcroExch.App')
app.Show()
oo2 = oo1.GetPDDoc()
? cc + ' 共有 ' + Transform(oo2.GetNumPages()) + ''



#7
凝聚双眼2024-06-03 09:10
有控件可以上传,测试一下吗?
#8
shschy2024-06-04 11:16
回复 6楼 csyx
感谢版主指点,获得页数已经实现。谢谢!主要是看到版主提供的方法可以在VFP上调用WPS的PDF组件,很想再深入了解一下“AcroExch.PDDoc”。所以跟着提问,如果能有进一步学习“AcroExch.PDDoc”资料,十分感谢!
#9
hsfisher6 天前 15:14
学习了
1