이 페이지에는 자동 번역된 텍스트가 포함될 수 있습니다.

C# 및 VB.NET에서 PDF 문서 해독

PDF 문서는 비밀번호, 인증서로 보호되거나 보호되지 않을 수 있습니다.

PDF 문서를 여는 방법에는 여러 가지가 있습니다. 권장되는 방법은 PDF 파일이 보안되어 있는지 먼저 확인하는 것입니다. 대안은 암호화되었는지 여부를 먼저 확인하지 않고 PDF 문서를 열어보는 것입니다. Docotic.Pdf 라이브러리는 비밀번호나 인증서가 필요한 문서에 대해 CannotDecryptPdfException 예외를 발생시킵니다.

PDF 해독, C# 및 VB.NET의 PDF에서 비밀번호 제거

PDF 문서가 보호되어 있는지 확인

라이브러리는 PDF 문서가 암호화되었는지 확인하기 위한 GetEncryptionInfo 메서드를 제공합니다. 이러한 메서드는 문서를 암호화하는 데 사용되는 암호화 처리기에 대한 정보도 제공합니다.

Docotic.Pdf 라이브러리 9.3.17014-dev 회귀 테스트 14,645건의 테스트 통과 총 NuGet 다운로드 4,172,488

다음 C# 코드 조각은 PDF 파일이 암호화되었는지 확인하는 방법을 보여줍니다:

var info = PdfDocument.GetEncryptionInfo(fileName);
if (info == null)
    Console.WriteLine("암호화되지 않음");
else if (info is PdfStandardEncryptionInfo standardInfo)
    Console.WriteLine("비밀번호로 암호화되어 있습니다");
else if (info is PdfPublicKeyEncryptionInfo publicKeyInfo)
    Console.WriteLine("디지털 인증서로 암호화됩니다");

암호로 암호화된 많은 PDF 문서는 열 때 암호가 필요하지 않습니다. 이러한 PDF 파일의 경우 "소유자"(무제한) 모드에서만 비밀번호가 필요합니다.

if (standardInfo.RequiresPasswordToOpen)
    Console.WriteLine("비밀번호가 없으면 열 수 없습니다");
else
    Console.WriteLine("비밀번호가 필요하지 않습니다");

인증서로 암호화된 PDF 문서의 경우 수신자에 대한 정보를 얻을 수 있습니다. 즉, 어떤 인증서가 PDF 문서의 잠금을 해제할 수 있는지 확인할 수 있습니다. 문서 권한은 PDF 파일을 해독하는 데 사용되는 실제 인증서에 따라 달라집니다.

// Recipients 속성에는 PDF 문서를 해독하는 데 사용할 수 있는 인증서에 대한 정보가 포함되어 있습니다
foreach (var recipient in publicKeyInfo.Recipients)
    Console.WriteLine(recipient.SerialNumber);

.NET에서 암호화된 PDF 문서 열기

암호를 사용하여 암호화된 PDF 문서를 열려면 암호가 필요할 수도 있고 필요하지 않을 수도 있습니다. 두 경우 모두 PdfDocument 생성자를 사용하여 문서를 엽니다.

PDF 파일에 비밀번호가 필요하지 않은 경우 암호 해독 핸들러 매개변수 없이 생성자를 사용하세요. Docotic.Pdf 라이브러리는 "사용자"(제한된) 권한으로 문서를 엽니다.

PDF 문서를 열려면 비밀번호가 필요한 경우 PdfStandardDecryptionHandler 유형의 핸들러가 있는 생성자를 사용하세요. "소유자"(무제한) 권한으로 보안된 PDF 파일을 열려면 동일한 생성자를 사용하십시오.

다음 코드 조각은 C#에서 암호로 보호된 PDF 파일을 여는 방법을 보여줍니다:

using (var document = new PdfDocument(fileName, new PdfStandardDecryptionHandler("password")))
{
    // 해독된 문서로 뭔가를 하세요
}

인증서를 사용하여 암호화된 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))
{
    // 해독된 문서로 뭔가를 하세요
}

PDF 파일에서 보호 제거

PDF 문서에서 보호를 제거하려면 다음 단계를 따르십시오.

  • 적절한 암호 해독 처리기와 함께 PdfDocument 생성자를 사용하여 PDF를 엽니다
  • 저장 옵션에서 암호화 처리기를 설정하지 마세요
  • PDF 문서를 저장

암호화 처리기가 없으면 라이브러리는 암호화되지 않은 PDF 문서를 저장합니다.

PDF에서 비밀번호를 제거하려면 PdfStandardDecryptionHandler 유형의 핸들러를 사용하여 문서를 엽니다. 인증서로 보호된 문서의 경우 PdfPublicKeyDecryptionHandler 유형의 핸들러를 사용하세요.

.NET에서 PDF 권한 확인

PDF 문서에 부여된 권한을 확인하려면 먼저 문서를 생성하거나 열어야 합니다. 암호화된 PDF 파일을 열든, 보호 기능이 없는 파일을 열든 상관없습니다.

이 코드 조각은 C#에서 PDF 권한을 확인하는 방법을 보여줍니다:

// 새 문서를 만들거나 기존 문서를 엽니다
using (PdfDocument document = ...)
{
    Console.WriteLine("Document permissions = {0}", document.GrantedPermissions);
}