【问题标题】:Previewing pdf files in MS Access and Foxit Reader webbrowser control fires print event在 MS Access 和 Foxit Reader webbrowser 控件中预览 pdf 文件会触发打印事件
【发布时间】:2021-05-16 18:28:16
【问题描述】:

长话短说,当您使用 Web browser controlVBA 打开嵌入在表单中的 pdf 文件时,pdf 阅读器会自动触发打印事件。

当前设置 Win1064Bit/Office365 版本 16.0.13628.20234 / Foxit Reader

这是一个截图来说明发生了什么

这个事件太烦人了,它不是触发一次,而是触发两次。

用于打开 PDF 文件的代码

Private Sub Command2_Click()
    Me.WebBrowser0.Navigate2 "C:\Temp\Sample.pdf"
End Sub

【问题讨论】:

标签: vba ms-access pdf foxit-reader


【解决方案1】:

如果要嵌入文件,则需要使用 HTML。否则,除非特定插件允许,否则您将拥有默认的“导航下载”行为。

我使用以下代码创建一个显示 pdf 的简单网页:

Dim wb As Object
Set wb = WebBrowser0.Object 
Dim fileLocation As String
fileLocation = "C:\Temp\Sample.pdf"
wb.Silent = True
With wb
    .Navigate2 "about:blank"
    Do Until .ReadyState = 4 '=READYSTATE_COMPLETE
        'This is a somewhat inefficient way to wait, but loading a blank page should only take a couple of milliseconds
        DoEvents
    Loop
    .Document.Open
    .Document.Write "<!DOCTYPE html><HTML><HEAD><TITLE>My title</TITLE></HEAD><BODY scroll=""auto"" style=""margin: 0px; padding: 0px;"">" & _
                        "<embed src=""" & fileLocation & """  width=""100%"" height=""100%"" />" & _
                        "</BODY></HTML>"
    .Document.Close
End With

这适用于 Adob​​e Reader、Foxit 或几乎任何支持在 Internet Explorer 中查看 PDF 的 PDF 查看器。

不要调整 PDF 查看器设置以适应您的应用程序。相反,创建一个适用于所有 PDF 查看器的应用程序,以避免在用户实际使用该 PDF 查看器并希望设置不同或想要不同的 PDF 查看器时出现大量麻烦。

【讨论】:

  • 不错!这困扰了我多年。您的解决方案简洁明了,正如您所说,不需要中继客户端特定设置谢谢!
  • 不错的解决方案!它也帮助了我。
  • @erik-a Internet Explorer 停止渲染 pdf 文件。使用 Windows Pro 21H1 和 Access 365 版本 2104 (13929.20372)。你知道解决方法吗?
  • 抱歉,Internet Explorer 已停产,所以事情最终肯定会中断,目前我没有解决方法,也没有其他选择
【解决方案2】:

像这样更改福昕阅读器的偏好

  • 打开福昕阅读器

  • 转到文件 |偏好 |文件

  • 取消选中“在网络浏览器中,默认以阅读模式显示 PDF”


【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-29
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-17
相关资源
最近更新 更多