이 페이지에는 자동 번역된 텍스트가 포함될 수 있습니다.
C# 및 VB.NET에서 PDF 문서 복호화
PDF 문서는 암호, 인증서로 보호되거나 보호되지 않을 수 있습니다.
PDF 문서를 여는 방법에는 여러 가지가 있습니다. 권장되는 방법은 먼저 PDF 파일이 보안되어 있는지 확인하는 것입니다. 다른 방법은 먼저 암호화 여부를 확인하지 않고 모든 PDF 문서를 열어 보는 것입니다. Docotic.Pdf 라이브러리는 암호 또는 인증서가 필요한 문서에 대해 CannotDecryptPdfException 예외를 발생시킵니다.

PDF 문서가 보호되었는지 확인
라이브러리는 PDF 문서가 암호화되었는지 확인하기 위한 GetEncryptionInfo 메서드를 제공합니다. 이 메서드는 문서를 암호화하는 데 사용된 암호화 처리기에 대한 정보도 제공합니다.
다음 C# 코드 조각은 PDF 파일이 암호화되었는지 확인하는 방법을 보여 줍니다:
var info = PdfDocument.GetEncryptionInfo(fileName);
if (info == null)
Console.WriteLine("Is not encrypted");
else if (info is PdfStandardEncryptionInfo standardInfo)
Console.WriteLine("Is encrypted with a password");
else if (info is PdfPublicKeyEncryptionInfo publicKeyInfo)
Console.WriteLine("Is encrypted with a digital certificate(s)");
암호로 암호화된 많은 PDF 문서는 열기 위해 암호가 필요하지 않습니다. 이러한 PDF 파일에서는 "owner"(제한되지 않은) 모드에만 암호가 필요합니다.
if (standardInfo.RequiresPasswordToOpen)
Console.WriteLine("Can not be opened without a password");
else
Console.WriteLine("Does not require a password");
인증서로 암호화된 PDF 문서는 해당 수신자에 대한 정보를 가져올 수 있습니다. 다시 말해, PDF 문서를 잠금 해제할 수 있는 인증서를 확인할 수 있습니다. 문서 권한은 PDF 파일을 해독하는 데 실제로 사용된 인증서에 따라 달라진다는 점에 유의하세요.
// Recipients 속성에는 인증서에 대한 정보가 포함됩니다
// PDF 문서를 복호화하는 데 사용할 수 있습니다
foreach (var recipient in publicKeyInfo.Recipients)
Console.WriteLine(recipient.SerialNumber);
.NET에서 암호화된 PDF 문서 열기
암호를 사용하여 암호화된 PDF 문서는 열 때 암호가 필요할 수도 있고 필요하지 않을 수도 있습니다. 어느 경우든 문서를 열려면 PdfDocument constructor를 사용하세요.
PDF 파일에 암호가 필요하지 않으면 암호 해독 처리기 매개 변수가 없는 생성자를 사용하세요. Docotic.Pdf 라이브러리는 문서를 "user"(제한된) 권한으로 엽니다.
PDF 문서를 열기 위해 암호가 필요한 경우 PdfStandardDecryptionHandler 형식의 처리기가 있는 생성자를 사용하세요. 보안된 PDF 파일을 "owner"(제한되지 않은) 권한으로 열려면 같은 생성자를 사용합니다.
다음 C# 코드 조각은 암호로 보호된 PDF 파일을 여는 방법을 보여 줍니다:
using var document = new PdfDocument(fileName, new PdfStandardDecryptionHandler("password"));
// do something with the decrypted document
인증서를 사용하여 암호화된 PDF 문서를 열려면 일치하는 인증서가 필요합니다. PDF 파일에 대해 일치하는 인증서가 하나 이상 있을 수 있습니다. 암호화된 PDF 문서의 작성자는 일치하는 인증서마다 다른 권한을 부여할 수 있습니다.
현재 사용자의 X.509 인증서 저장소에 일치하는 인증서가 설치되어 있으면 암호 해독 처리기 매개 변수가 없는 PdfDocument 생성자를 사용하세요. Docotic.Pdf 라이브러리는 인증서 저장소에서 첫 번째로 일치하는 인증서를 사용하여 문서를 엽니다.
현재 사용자의 X.509 인증서 저장소에 일치하는/원하는 인증서가 없는 경우 PdfPublicKeyDecryptionHandler 인스턴스를 만들고 PdfDocument 생성자와 함께 사용하세요. 인증서, 키 저장소 또는 인증서 저장소를 사용하여 처리기를 만들 수 있습니다.
다음 C# 코드 조각은 키 저장소의 인증서로 공개 키 암호 해독 처리기를 만드는 방법을 보여 줍니다. 그런 다음 이 처리기를 사용하여 인증서로 보호된 PDF 파일을 엽니다:
var handler = new PdfPublicKeyDecryptionHandler("key-store.p12", "password");
using var document = new PdfDocument(fileName, handler);
// do something with the decrypted document
PDF 파일에서 보호 제거
PDF 문서에서 보호를 제거하려면 다음 단계를 따르세요:
- 적절한 암호 해독 처리기를 사용하여 PdfDocument 생성자로 PDF를 엽니다
- save options에서 암호화 처리기를 설정하지 않습니다
- PDF 문서를 저장합니다
암호화 처리기가 없으면 라이브러리는 PDF 문서를 암호화하지 않은 상태로 저장합니다.
PDF에서 암호를 제거하려면 PdfStandardDecryptionHandler 형식의 처리기로 문서를 엽니다. 인증서로 보호된 문서에는 PdfPublicKeyDecryptionHandler 형식의 처리기를 사용하세요.
.NET에서 PDF 권한 확인
PDF 문서에 부여된 permissions를 확인하려면 먼저 문서를 만들거나 열어야 합니다. 암호화된 PDF 파일을 열든 보호되지 않은 파일을 열든 상관없습니다.
다음 코드 조각은 C#에서 PDF 권한을 확인하는 방법을 보여 줍니다:
// 새 문서를 만들거나 기존 문서를 엽니다
using var document = new PdfDocument(fileName);
Console.WriteLine("Document permissions = {0}", document.GrantedPermissions);