从LotusScript Web代理将pdf文件流式传输到浏览器

时间:2015-02-20 07:37:48

标签: pdf streaming lotus-domino lotusscript agent

我正在创建一个LotusScript Web代理,该代理在网络上的某处读取pdf文件的内容,并将其作为流返回给浏览器。

代理将像这样调用:getPDF?openAgent&pdfId=123456并且应该直接返回pdf流。 (我还没有实现url参数捕获)

这是我目前的尝试,我仍然有一个问题,将读缓冲区转换为最终流

Sub Initialize
    On Error GoTo errrorhandle
    Dim session As New NotesSession
    Dim stream As NotesStream
    Set stream = session.CreateStream
    Dim buffer As variant
    Dim fileNum As Integer
    Dim txt As String
    Dim filename As String
    Dim filecontent As String

    filename = "C:\temp\test.PDF"

    If Not stream.Open(filename,"binary") Then
        MessageBox filename,, "Open failed"
        Exit Sub
    End If

    If stream.Bytes = 0 Then
        MessageBox filename,, "File has no content"
        Exit Sub
    End If

    Print "content-type:application/pdf"
    Do
        buffer =  stream.read(1)
        Print buffer(0)
    Loop Until stream.IsEOS

    Call stream.Close

    Exit Sub
errrorhandle :
    Print "Error :" & Error & " at line : " & Erl
    Exit sub
End Sub

2 个答案:

答案 0 :(得分:0)

无法从Lotusscript中的流输出pdf。

我建议您将pdf附加到notesdocument并将用户重定向到附加的文件URL,然后再删除该文档。

您可以使用以下语法获取保存的pdf http://server/database/unid/ $文件/ myfile.pdf

答案 1 :(得分:0)

关注Thomas Adrian response,将pdf附加到数据库中的文档中,然后按照描述提供链接是最佳解决方案。

请注意,如果所述数据库具有或需要限制访问权限,则将要求用户进行身份验证

如果网络用户不是经过身份验证的用户,则您需要至少为读者提供托管数据库的ACL中的“匿名”访问权限才能使用...如果数据库有其他用户,这并不总是可取的目的。

但是,您可以为此目的创建专用数据库,并且无限制地访问ACL。