비밀번호로 보호된 PDF 문서 생성

PDF 문서 생성 시 비밀번호를 사용해 PDF 문서를 보호할 수 있습니다.

비밀번호를 사용한 문서 보호

PDF 문서에 비밀번호를 적용할 경우 PDF 뷰어에서 열 때 정확한 비밀번호를 입력해야 문서가 열립니다. 암호화 알고리즘은 128/256비트 키를 갖는 AES(Advanced Encryption Standard)를 사용하므로 매우 안전하게 문서를 보호할 수 있습니다.

문서 암호화를 위해서는 Encryptor 프로퍼티에 값을 설정한 후 Write 메서드를 호출하면 됩니다. 가장 기본적인 값으로 UserPassword 프로퍼티에 비밀번호를 지정합니다. 비밀번호를 지정하지 않을 경우 암호화된 PDF는 생성되지 않고 일반 PDF 파일이 생성됩니다. 암호화 알고리즘은 Key 프로퍼티에 지정할 수 있으며 지정하지 않을 경우 128비트 AES 알고리즘이 기본값으로 적용됩니다.

ASP
Set pdfDoc = Server.CreateObject("TABS.PdfDocument")
pdfDoc.PageSize = "A4"
pdfDoc.CoverHtml = pdfDoc.LoadTextFromFile("C:\Template\cover.htm")
pdfDoc.BodyHtml = pdfDoc.LoadTextFromFile("C:\Template\content.htm")

'암호화 방식과 키 길이 설정
pdfDoc.Encryptor.Key = "128 AES"
'문서 비밀번호 지정
pdfDoc.Encryptor.UserPassword = "asdf1234"

If pdfDoc.Connect(19975, 30) Then
    retCode = pdfDoc.Write("C:\result\encrypt.pdf")
    If retCode = 0 Then
        Response.Write "<p>PDF 문서가 성공적으로 생성되었습니다.</p>"
    Else
        Response.Write "<p>PDF 문서를 생성하는데 실패하였습니다. 오류 코드: " & retCode & "</p>"
    End If
    pdfDoc.Close
Else
    Response.Write "<p>PDF 서버로 연결할 수 없습니다</p>"
End If

UserPassword를 활용한 문서 권한 제어

PDF 문서 보호를 위한 비밀번호는 두 가지 형태가 존재합니다. 하나는 사용자 비밀번호(UserPassword)이고 다른 하나는 소유자 비밀번호(OwnerPassword)입니다. 소유자 비밀번호로 문서를 열 경우 문서에 대한 모든 권한을 갖지만 사용자 비밀번호로 열 경우는 권한을 제한할 수 있습니다. PDF 문서에서 권한은 문서 내용 복사, 인쇄, 수정을 의미합니다.

위 예제에서는 UserPassword 프로퍼티에만 값을 지정하고 OwnerPassword 프로퍼티에는 값을 지정하지 않았습니다. 이 경우 자동으로 OwnerPassword에 UserPassword 값이 지정되게 됩니다. 따라서 사용자 비밀번호로 문서를 열면 문서에 대한 모든 권한을 갖게 됩니다.

사용자에게 모든 권한을 주는 대신 복사, 수정, 인쇄 기능을 제한하고 싶다면 사용자 비밀번호와 소유자 비밀번호를 다르게 설정합니다. 그리고 권한을 설정하는 프로퍼티인 Modify, Extract, Print를 False로 지정합니다. Modify를 False로 지정하면 뷰어에서 서명, 스티커노트를 넣을 수 없으며 텍스트 강조 등의 편집 기능을 사용할 수 없게 됩니다. Extract를 False로 지정하면 문서에 포함된 텍스트 또는 이미지를 클립보드로 복사할 수 없게 됩니다. Print를 False로 지정하면 뷰어에서 인쇄 기능을 사용할 수 없게 됩니다.

ASP
Set pdfDoc = Server.CreateObject("TABS.PdfDocument")

'암호화 방식과 키 길이 설정
pdfDoc.Encryptor.Key = "128 AES"
'문서 비밀번호 지정
pdfDoc.Encryptor.OwnerPassword = "qwer1234"
pdfDoc.Encryptor.UserPassword = "asdf1234"
'문서 사용 권한 제한
pdfDoc.Encryptor.Modify = False
pdfDoc.Encryptor.Extract = False
pdfDoc.Encryptor.Print = False