Как установить пароль на файл PDF с помощью ITextSharp без загрузки этого файла PDF? - PullRequest
0 голосов
/ 03 февраля 2012

Я создаю простое приложение для создания PDF, используя ASP.NET. это приложение создаст файл PDF на лету с паролем для защиты этого документа. вот мой код:

    Sub createPDFFile()
        Dim doc As Document = New Document
        PdfWriter.GetInstance(doc, New FileStream(Request.PhysicalApplicationPath + _
                              "pdf\result.pdf", FileMode.Create))
        doc.Open()
        doc.Add(New Paragraph("Hello World!! only Testing"))
        doc.Close()
        SetPDFPassword(Server.MapPath("~/pdf/result.pdf"), "resultwithpassword.pdf", "12345")
        Response.Redirect("pdf/1.pdf")
    End Sub

и вот мой код для добавления пароля в файл PDF:

     Private Sub SetPDFPassword(ByVal FullPathPdfFileName As String, ByVal DownloadPDFFileName As String, ByVal ForOpenPassword As String)
        Dim sname As String = FullPathPdfFileName
        Dim sname1 As String = New System.IO.FileInfo(FullPathPdfFileName).DirectoryName & "/test.pdf"
        Dim reader As New PdfReader(sname)
        Dim n As Integer = reader.NumberOfPages

        Dim document As New Document(reader.GetPageSizeWithRotation(1))
        Dim writer As PdfWriter = PdfWriter.GetInstance(document, New IO.FileStream(sname1, IO.FileMode.Create))
        writer.SetEncryption(PdfWriter.STRENGTH128BITS, ForOpenPassword, Nothing, PdfWriter.AllowPrinting)
        document.Open()
        Dim cb As PdfContentByte = writer.DirectContent
        Dim page As PdfImportedPage
        Dim rotation As Integer
        Dim i As Integer = 0

        While i < n
            i += 1
            document.SetPageSize(reader.GetPageSizeWithRotation(i))
            document.NewPage()
            page = writer.GetImportedPage(reader, i)
            rotation = reader.GetPageRotation(i)
            If rotation = 90 OrElse rotation = 270 Then
                cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, _
                reader.GetPageSizeWithRotation(i).Height)
            Else
                cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, _
                0)

            End If
        End While

        document.Close()
        writer.Close()

        Dim PDFfile As New IO.FileStream(sname1, IO.FileMode.Open)
        Dim FileSize As Long
        FileSize = PDFfile.Length
        Dim buffer As Byte() = New Byte(CInt(FileSize) - 1) {}
        PDFfile.Read(buffer, 0, CInt(FileSize))
        PDFfile.Close()
        System.IO.File.Delete(sname1)
        Response.AddHeader("Content-Disposition", "attachment;filename=" & DownloadPDFFileName)
        Response.ContentType = "application/pdf"
        Response.BinaryWrite(buffer)
        Response.Flush()
        Response.Close()

    End Sub

этот код работает отлично. он может сгенерировать файл PDF и добавить некоторый пароль для открытия, но файл PDF будет отправлен пользователю. Кто-нибудь знает, как создать PDF-файл с паролем, но этот файл результатов по-прежнему на сервере и может отображаться только из веб-браузера (без отображения запроса на загрузку) ?? заранее спасибо ..: D

1 Ответ

1 голос
/ 03 февраля 2012

Поправьте меня, если я ошибаюсь, но я думаю, что браузер должен показать PDF в браузере или спросить, хотите ли вы его скачать.

Adobe Acrobat plug in можно загрузить по адресу http://www.adobe.com/ и является плагином, помогающим пользователю отображать PDF в браузере.

Как отобразить pdf в браузере с установленным плагином: http://www.okanagan.bc.ca/administration/itservices/edtech/elearn/Configuring_the_browser_to_show_pdf_files.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...