在 MS Access 和 Foxit Reader 中预览 pdf 文件 webbrowser 控件触发打印事件
Previewing pdf files in MS Access and Foxit Reader webbrowser control fires print event
长话短说,当您使用 Web browser control 和 VBA
打开嵌入在表单中的 pdf 文件时,pdf reader 会自动触发打印事件。
当前设置 Win1064Bit/Office365 版本 16.0.13628.20234 / Foxit Reader
这是一个截图来说明发生了什么
这个事件太烦人了,它不是被触发了一次,而是被触发了两次。
用于打开 PDF 文件的代码
Private Sub Command2_Click()
Me.WebBrowser0.Navigate2 "C:\Temp\Sample.pdf"
End Sub
像这样更改 Foxit Reader 首选项
打开福昕Reader
转到文件 |偏好 |文件
取消选中“在网络浏览器中,默认以阅读模式显示 PDF”
如果要嵌入文件,需要使用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
这适用于 Adobe Reader、Foxit 或几乎所有支持在 Internet Explorer 中查看 PDF 的 PDF 查看器。
不要调整 PDF 查看器设置以适应您的应用程序。相反,创建一个适用于所有 PDF 查看器的应用程序,以避免在用户实际使用该 PDF 查看器并希望设置不同或想要不同的 PDF 查看器时出现大量麻烦。
长话短说,当您使用 Web browser control 和 VBA
打开嵌入在表单中的 pdf 文件时,pdf reader 会自动触发打印事件。
当前设置 Win1064Bit/Office365 版本 16.0.13628.20234 / Foxit Reader
这是一个截图来说明发生了什么
这个事件太烦人了,它不是被触发了一次,而是被触发了两次。
用于打开 PDF 文件的代码
Private Sub Command2_Click()
Me.WebBrowser0.Navigate2 "C:\Temp\Sample.pdf"
End Sub
像这样更改 Foxit Reader 首选项
打开福昕Reader
转到文件 |偏好 |文件
取消选中“在网络浏览器中,默认以阅读模式显示 PDF”
如果要嵌入文件,需要使用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
这适用于 Adobe Reader、Foxit 或几乎所有支持在 Internet Explorer 中查看 PDF 的 PDF 查看器。
不要调整 PDF 查看器设置以适应您的应用程序。相反,创建一个适用于所有 PDF 查看器的应用程序,以避免在用户实际使用该 PDF 查看器并希望设置不同或想要不同的 PDF 查看器时出现大量麻烦。