Visual_Basic 板


LINE

整理一下有关Acrobat与PDF方面的心得. Adobe出品Acrobat已经有十个版本了, 其中,含7.0版之後,支援VB6的ActiveX元件重新整理了一次,ProgID不一样了, 而且还出现了SDK,也就是有另外一组非控制项而是type library可以使用. 所以,如果要做个简单的表单,表单上放一个PDF视窗,如果是使用下列二种方式 建立控制项,都不太保险: Dim WithEvents my_pdf_view As AcroPDF Set my_pdf_view = Controls.Add("AcroPDF.PDF.1") Dim WithEvents my_pdf_view Ad PDF Set my_pdf_view = Controls.Add("Pdf.PDFCtrl.6") 你不知道使用者电脑到底是有哪个版本的Acrobat. 此时就需要一种侦测式的控制项建构,如以下函式: Function GetMyPDFView(ByRef Form1 As Form) As Object Const PDFViewID As String = "PDFView" On Error Goto ErrGetMyPDFView If HasPDFControl(Form1) Then Form1.Remove PDFViewID Set GetMyPDFView = Form1.Controls.Add("AcroPDF.PDF.1", PDFViewID) If GetMyPDFView Is Nothing Then _ Set GetMyPDFView = Form1.Controls.Add("AcroPDF.PDF", PDFViewID) If GetMyPDFView Is Nothing Then _ Set GetMyPDFView = Form1.Controls.Add("Pdf.PDFCtrl.6", PDFViewID) If GetMyPDFView Is Nothing Then _ Set GetMyPDFView = Form1.Controls.Add("Pdf.PDFCtrl.5", PDFViewID) ... If GetMyPDFView Is Nothing Then _ Set GetMyPDFView = Form1.Controls.Add("Pdf.PDFCtrl.1", PDFViewID) Exit Function ErrGetMyPDFView: Resume Next End Function Function HasPDFControl(Form1 As Form) As Boolean Dim ctrl As Variant For Each ctrl In Form1.Controls If ctrl.Name = "PDFView" Then HasPDFControl = True End If Next HasPDFControl = False End Function 另外要注意,表单上别放特定版本Acrobat的ActiveX控制项,以免表单在执行时 仍检查电脑是否有特定版本,可能因此妨碍程式执行. 而因为AcroPDF版本蛮乱的,如果你公司跨越了Acrobat这几个版本的年代, 就算放个AcroPDF控制项,有可能在某位使用者的电脑遇到一则讯息说: "无法从"AcroPDF.dll"载入AcroPDF控制项。您的AcroPDF版本可能比较旧......" 不知道这个DLL设计过程曾经发生过什麽样的事情. 不过,如果用程式动态新增控制项,则可以避开这个问题. 至於旧版Pdf.PDFCtrl,这是Acrobat 1 到 6 版的PDF控制项,似乎调用了AcroRd32.exe, 所以,假如用 .LoadFile <file-path> 开了档案,并且没有任何方法能够关闭档案, 假如你又用 .LoadFile 开启另一个档案,或者是用 Controls.Remove 拿掉控制项, 会触发背後的Acrobat Reader关闭的动作. 而开启的PDF如果是新格式,内容含有 JavaScript,则Acrobat Reader好像是另外用网页浏览器元件来开启吧,所以此时会 显示关闭讯息说: "有些档案已经开在网页浏览器里了,假如您离开了就会关闭这个 应用程式. 您确定要离开吗?" 然後有离开和取消二个按钮. 如果这一段程式,你是拿同一个控制项开启第二个档案,并且当看到这个讯息时, 你选择了离开AcroRd应用程式,就不会正常开启第二个档案. 这情况很好玩, 控制项正要打开档案,但是不知情的使用者选择离开应用程式,而使档案关闭. 旧版本的这种情况,我觉得程式应该要写成,如果你要依序开关好几个PDF档案, 要对每个档案都开一个独立的PDF控制项,要关闭档案时是用 Controls.Remove. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.112.226.142







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP