Access 2007 - 在表单上显示PDF内容

时间:2012-07-14 11:04:26

标签: ms-access

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

2 个答案:

答案 0 :(得分:3)

免责声明:此答案仅适用于存储在数据库外部的PDF文件作为单独的文件。它们可以通过网络连接定位,但我不知道如何直接从数据库表中访问它们。这个site gives a thorough guide to using the attachments,但没有显示如何自动显示它们。它可能不是Access提供的功能。

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

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

例如,如果控件被调用WebBrowser0,那么以下内容将起作用:

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

这是一种用于在Access中显示其他内容的极其通用的方法。您可以找到更多信息here.

答案 1 :(得分:0)

我知道用于预览PDF的两种方法(Daniel和Adobe Active X控件建议的WebBrowswer)需要将文件路径传递给控件。

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

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

示例代码

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

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记录集来完成。