[정보] IT정보&활용 2025. 6. 2. 18:35

PDF에 비밀번호 설정하기2

반응형

2025.05.28 - [[楞嚴] 생각 나누기/[情] 사회복지정보화] - PDF에 비밀번호 설정하기

 

PDF에 비밀번호 설정하기

급한 분을 위해 파일을 먼저 올려두었습니다.하지만 아래도 한번 읽어봐주세요. 개인정보보호법 등이 강화되면서 PDF 파일을 보내려할 때에도 비밀번호를 설정해야하는 경우가 있습니다.하지만

welfareact.net

 

앞서 CMD 창에서 직접 입력해야하는 PDF 비밀번호 설정 프로그램을 공유했지만, 아무래도 이런 직접적인 명령에 익숙치 않은 분들도 많을거 같아 추가로 작업해보았습니다.

 

PDF 비밀번호 v2.exe
7.52MB

 

먼저번 것은 파일 하나만으로 가능토록 통합한 것이었다면, 이번엔 PDF 파일을 선택하고, 비밀번호를 입력하는 창이 떠서 보다 직관적으로 작업할 수 있도록 수정했습니다.

다만, 이번엔 파일 하나로 안되어서 압축 자동실행 파일로 만들었습니다.

위 파일을 다운로드 받으신 다음, 실행하면 프로그램 폴더가 만들어집니다.

 

이후 파일 중 bat 파일 [ PDF_비밀번호_v2.bat ]을 더블클릭하시면 됩니다.

PDF 비밀번호 설정 도구

 

아래는 몰라도 되는 이야기입니다.

더보기

위와 같이 만들기 위해 PowerShell GUI 스크립트를 먼저 만들었습니다.

바로 [ EncryptPdf-GUI.ps1 ] 파일입니다.

Add-Type -AssemblyName Systehttp://m.Windows.Forms
Add-Type -AssemblyName System.Drawing

# 폼 생성
$form = New-Object Systehttp://m.Windows.Forms.Form
$form.Text = "PDF 비밀번호 설정 도구 (use QPDF)" 
$form.Size = New-Object Systehttp://m.Drawing.Size(400, 360)
$form.StartPosition = "CenterScreen"

# 파일 선택 라벨
$fileLabel = New-Object Systehttp://m.Windows.Forms.Label
$fileLabel.Text = "PDF 파일: 아직 선택되지 않음"
$fileLabel.Location = New-Object Systehttp://m.Drawing.Point(10, 20)
$fileLabel.Size = New-Object Systehttp://m.Drawing.Size(360, 20)
$forhttp://m.Controls.Add($fileLabel)

# 파일 선택 버튼
$fileButton = New-Object Systehttp://m.Windows.Forms.Button
$fileButton.Text = "PDF 파일 선택"
$fileButton.Location = New-Object Systehttp://m.Drawing.Point(10, 50)
$fileButton.Size = New-Object Systehttp://m.Drawing.Size(120, 30)
$forhttp://m.Controls.Add($fileButton)

# 비밀번호 입력 라벨
$pwdLabel = New-Object Systehttp://m.Windows.Forms.Label
$pwdLabel.Text = "설정할 비밀번호:"
$pwdLabel.Location = New-Object Systehttp://m.Drawing.Point(10, 100)
$pwdLabel.Size = New-Object Systehttp://m.Drawing.Size(200, 20)
$forhttp://m.Controls.Add($pwdLabel)

# 비밀번호 입력 박스
$pwdBox = New-Object Systehttp://m.Windows.Forms.TextBox
$pwdBox.Location = New-Object Systehttp://m.Drawing.Point(10, 125)
$pwdBox.Size = New-Object Systehttp://m.Drawing.Size(360, 25)
$pwdBox.UseSystemPasswordChar = $true
$forhttp://m.Controls.Add($pwdBox)

# 암호화 버튼
$encryptButton = New-Object Systehttp://m.Windows.Forms.Button
$encryptButton.Text = "PDF 암호화 실행"
$encryptButton.Location = New-Object Systehttp://m.Drawing.Point(10, 160)
$encryptButton.Size = New-Object Systehttp://m.Drawing.Size(120, 30)
$forhttp://m.Controls.Add($encryptButton)

# 상태 표시 라벨
$statusLabel = New-Object Systehttp://m.Windows.Forms.Label
$statusLabel.Text = ""
$statusLabel.Location = New-Object Systehttp://m.Drawing.Point(10, 200)
$statusLabel.Size = New-Object Systehttp://m.Drawing.Size(360, 40)
$forhttp://m.Controls.Add($statusLabel)

# 저작권 라벨
$copyrightLabel = New-Object Systehttp://m.Windows.Forms.Label
$copyrightLabel.Text = "This software includes QPDF, licensed under Apache License 2.0.`nSee https://github.com/qpdf/qpdf"
$copyrightLabel.Location = New-Object Systehttp://m.Drawing.Point(10, 250)
$copyrightLabel.Size = New-Object Systehttp://m.Drawing.Size(380, 50)
$copyrightLabel.Font = New-Object Systehttp://m.Drawing.Font("Arial", 8)
$forhttp://m.Controls.Add($copyrightLabel)

# 전역 변수로 파일 경로 보관
$global:selectedPdfPath = $null

# 파일 선택 버튼 이벤트
$fileButton.Add_Click({
    $fileDialog = New-Object Systehttp://m.Windows.Forms.OpenFileDialog
    $fileDialog.Filter = "PDF Files (*.pdf)|*.pdf"
    if ($fileDialog.ShowDialog() -eq "OK") {
        $global:selectedPdfPath = $fileDialog.FileName
        $fileLabel.Text = "PDF 파일: " + [Systehttp://m.IO.Path]::GetFileName($selectedPdfPath)
    }
})

# 암호화 버튼 이벤트
$encryptButton.Add_Click({
    if (-not $selectedPdfPath) {
        [Systehttp://m.Windows.Forms.MessageBox]::Show("먼저 PDF 파일을 선택하세요.", "오류", "OK", "Error")
        return
    }

    $password = $pwdBox.Text
    if (-not $password) {
        [Systehttp://m.Windows.Forms.MessageBox]::Show("비밀번호를 입력하세요.", "오류", "OK", "Error")
        return
    }

    $outputPath = Join-Path -Path ([Systehttp://m.IO.Path]::GetDirectoryName($selectedPdfPath)) -ChildPath ("encrypted_" + [Systehttp://m.IO.Path]::GetFileName($selectedPdfPath))

    try {
        Start-Process -FilePath "qpdf.exe" -ArgumentList "--encrypt `"$password`" `"$password`" 256 -- `"$selectedPdfPath`" `"$outputPath`"" -NoNewWindow -Wait
        $statusLabel.Text = "★ 암호화 완료! 파일: encrypted_" + [Systehttp://m.IO.Path]::GetFileName($selectedPdfPath)
    } catch {
        $statusLabel.Text = "☆ 암호화 실패: $_"
    }
})

# 폼 실행
$form.Topmost = $true
$form.Add_Shown({ $form.Activate() })
[void]$form.ShowDialog()

 

이후 이 파일을 .bat에서 불러오게 했습니다.

@echo off
title PDF 비밀번호 설정 도구 실행기 (QPDF)
echo ========================================
echo  PowerShell GUI를 실행합니다...
echo ========================================
echo.

powershell -ExecutionPolicy Bypass -File "%~dp0EncryptPdf-GUI.ps1"

echo.

 

 

반응형

PDF에 비밀번호 설정하기

반응형

PDF_Encryptor.exe
4.14MB

 

급한 분을 위해 파일을 먼저 올려두었습니다.

하지만 아래도 한번 읽어봐주세요.

 

 

개인정보보호법 등이 강화되면서 PDF 파일을 보내려할 때에도 비밀번호를 설정해야하는 경우가 있습니다.

하지만 유료 프로그램을 사용해야하는 등 쉽지가 않습니다.

특정 웹사이트를 이용하면 비밀번호를 걸어주기도 하지만, 그 경우 서버로 파일을 일단 업로드 해야하기 때문에 해당 파일이 유출되지 않을 것이라는 보장은 없습니다.

 

그래서 찾아보았습니다.

Github에 보면 qpdf라는 프로그램이 있습니다.

https://github.com/qpdf/qpdf

 

GitHub - qpdf/qpdf: qpdf: A content-preserving PDF document transformer

qpdf: A content-preserving PDF document transformer - qpdf/qpdf

github.com

 

다양한 기능을 가진 프로그램이지만, 사용법이 쉬워보이진 않습니다.

그래도 설명해보자면, 파일들을 다운받은 다음 bin 폴더에 있는 qpdf.exe 파일을 cmd 창에서 실행합니다.

qpdf.exe --encrypt %userPwd% %userPwd% 256 -- "%inputFile%" "encrypted_%inputFile%"

 

이걸 bat 파일로 만들면 조금더 쉽긴 합니다.

 

PDF_Encryptor.bat

@echo off
title PDF 암호화 도구 (QPDF)
echo ==============================
echo PDF 파일에 비밀번호를 설정합니다.
echo set a password on your PDF
echo ==============================
echo.

set /p inputFile="비밀번호를 설정할 PDF 파일명을 입력하세요 (예: sample.pdf): "
set /p userPwd="설정할 비밀번호를 입력하세요: "

:: 암호화 실행 - 소유자 비밀번호는 사용자 비밀번호와 동일하게 설정
qpdf.exe --encrypt %userPwd% %userPwd% 256 -- "%inputFile%" "encrypted_%inputFile%"

echo.
echo ■ 암호화 완료! 결과 파일: encrypted_%inputFile%
echo -----------------------------------------------------------------------------------------
echo This software includes QPDF, which is licensed under the Apache License 2.0.
echo See https://github.com/qpdf/qpdf for more information.
pause

 

조금더 검색해 봅니다.

그랬더니 bat 파일을 기반으로 exe, dll 등을 묶어서 하나의 실행파일로 만들어주는 프로그램을 Github에서 찾을 수 있습니다.

https://github.com/l-urk/Bat-To-Exe-Converter-64-Bit/releases

 

Releases · l-urk/Bat-To-Exe-Converter-64-Bit

Bat To Exe Converter (64 Bit) - Developer Fatih Kodak - l-urk/Bat-To-Exe-Converter-64-Bit

github.com

 

이제 이걸 이용해서 하나의 파일로 묶어봅니다.

 

PDF_Encryptor.exe
4.14MB
README.txt
0.00MB

 

예의상 README.txt도 만들어 봅니다.

 

이제 PDF_Encryptor.exe 파일 하나만 있으면 PDF에 비밀번호를 설정할 수 있습니다.

단, 이 실행파일과 PDF 파일이 같은 폴더에 있어야 합니다.

그리고 PDF 파일 명은 직접 입력해주셔야 합니다.

 

기왕 만들었으니 배포해봅니다. 저작권에도 문제는 없다고 합니다.

그럼...

반응형