3

在 Access 2007 上,有没有办法在表单上显示 PDF 的内容,即使它只是第一页?此 PDF 作为附件保存在表格中。

4

2 回答 2

5

免责声明:此答案仅适用于作为单独文件存储在数据库之外的 PDF 文件。它们可以通过网络连接定位,但我不知道如何直接从您的数据库表中访问它们。该站点提供了使用附件的详尽指南,但没有说明如何实际自动显示它们。这可能是 Access 未提供的功能。

Microsoft Web Browser您可以使用控件显示 Internet Explorer 可以显示的任何内容。

添加控件后,您可以导航到要在表单的加载或打开事件期间显示的任何内容。

例如,如果调用控件,WebBrowser0则以下操作将起作用:

Private Sub Form_Load()
    Me.WebBrowser0.Navigate2 "C:\example.pdf" 'Substitute the actual address here.
End Sub

这是一种非常通用的方法,用于在 Access 中显示其他内容。您可以在此处找到更多信息

于 2012-07-14T14:16:34.170 回答
0

我所知道的用于预览 PDF 的唯一两种方法(Daniel 建议的 WebBrowser 和 Adob​​e Active X 控件)需要将文件路径传递给控件。

我建议从附件字段中提取文件并将其保存到临时位置,例如C:\Documents and Settings\username\AppData. 这可以通过使用 vbaEnviron命令找到。

使用嵌入式 DAO 记录集中的方法提取文件SaveToFile(这是附件在内存中存储的方式)。

示例代码

假设每条记录都有一个名为的字段 AttachedFile ,并且每条记录只有一个附加的 PDF。表单正在使用名为 PreviewBrowser 查看 PDF的 WebBrowser 控件

Private Sub Form_Current()
On Error GoTo ExitSub
    Dim FormRS As DAO.Recordset
    Set FormRS = Me.Recordset

    Dim RecAtt As DAO.Recordset

    If (Me.AttachedFile.AttachmentCount > 0) Then
        Set RecAtt = FormRS.Fields("AttachedFile").Value
        RecAtt.OpenRecordset

        Dim Path As String
        FilePath = Environ("APPDATA") & "\Preview.pdf"

        If (Dir(FilePath) <> "") Then Kill FilePath
        RecAtt.Fields("FileData").SaveToFile FilePath
        Me.PreviewBrowser.Navigate2 FilePath
    End If

ExitSub:
    RecAtt.Close
End Sub

当然,如果给定记录有多个附件,则代码需要稍微复杂一些,但这可以通过操作RecAtt记录集来完成。

于 2012-07-15T19:01:30.087 回答