이 도구는 QPDF 오픈소스 라이브러리를 이용하여 PDF 파일에 비밀번호를 설정할 수 있도록 제작된 배치 기반 실행파일입니다.
다운 받은 파일을 실행하면 프로그램 폴더가 하나 만들어집니다.
1. 실행파일(PDF_비밀번호.bat)을 실행합니다.
2. 비밀번호를 설정할 PDF 파명을 선택합니다.
3. 사용자 비밀번호를 입력합니다.
4. 비밀번호 설정된 PDF는 "encrypted_파일명.pdf" 형식으로 생성됩니다.
PDF_비밀번호_v2.bat
@echo off
powershell -ExecutionPolicy Bypass -File "EncryptPdf-GUI.ps1"
EncryptPdf-GUI.ps1
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 폼 생성
$form = New-Object System.Windows.Forms.Form
$form.Text = "PDF 비밀번호 설정 도구 (use QPDF)"
$form.Size = New-Object System.Drawing.Size(400, 360)
$form.StartPosition = "CenterScreen"
# 파일 선택 라벨
$fileLabel = New-Object System.Windows.Forms.Label
$fileLabel.Text = "PDF 파일: 아직 선택되지 않음"
$fileLabel.Location = New-Object System.Drawing.Point(10, 20)
$fileLabel.Size = New-Object System.Drawing.Size(360, 20)
$form.Controls.Add($fileLabel)
# 파일 선택 버튼
$fileButton = New-Object System.Windows.Forms.Button
$fileButton.Text = "PDF 파일 선택"
$fileButton.Location = New-Object System.Drawing.Point(10, 50)
$fileButton.Size = New-Object System.Drawing.Size(120, 30)
$form.Controls.Add($fileButton)
# 비밀번호 입력 라벨
$pwdLabel = New-Object System.Windows.Forms.Label
$pwdLabel.Text = "설정할 비밀번호:"
$pwdLabel.Location = New-Object System.Drawing.Point(10, 100)
$pwdLabel.Size = New-Object System.Drawing.Size(200, 20)
$form.Controls.Add($pwdLabel)
# 비밀번호 입력 박스
$pwdBox = New-Object System.Windows.Forms.TextBox
$pwdBox.Location = New-Object System.Drawing.Point(10, 125)
$pwdBox.Size = New-Object System.Drawing.Size(360, 25)
$pwdBox.UseSystemPasswordChar = $true
$form.Controls.Add($pwdBox)
# 암호화 버튼
$encryptButton = New-Object System.Windows.Forms.Button
$encryptButton.Text = "PDF 암호화 실행"
$encryptButton.Location = New-Object System.Drawing.Point(10, 160)
$encryptButton.Size = New-Object System.Drawing.Size(120, 30)
$form.Controls.Add($encryptButton)
# 상태 표시 라벨
$statusLabel = New-Object System.Windows.Forms.Label
$statusLabel.Text = ""
$statusLabel.Location = New-Object System.Drawing.Point(10, 200)
$statusLabel.Size = New-Object System.Drawing.Size(360, 40)
$form.Controls.Add($statusLabel)
# 저작권 라벨
$copyrightLabel = New-Object System.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 System.Drawing.Point(10, 250)
$copyrightLabel.Size = New-Object System.Drawing.Size(380, 50)
$copyrightLabel.Font = New-Object System.Drawing.Font("Arial", 8)
$form.Controls.Add($copyrightLabel)
# 전역 변수로 파일 경로 보관
$global:selectedPdfPath = $null
# 파일 선택 버튼 이벤트
$fileButton.Add_Click({
$fileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Filter = "PDF Files (*.pdf)|*.pdf"
if ($fileDialog.ShowDialog() -eq "OK") {
$global:selectedPdfPath = $fileDialog.FileName
$fileLabel.Text = "PDF 파일: " + [System.IO.Path]::GetFileName($selectedPdfPath)
}
})
# 암호화 버튼 이벤트
$encryptButton.Add_Click({
if (-not $selectedPdfPath) {
[System.Windows.Forms.MessageBox]::Show("먼저 PDF 파일을 선택하세요.", "오류", "OK", "Error")
return
}
$password = $pwdBox.Text
if (-not $password) {
[System.Windows.Forms.MessageBox]::Show("비밀번호를 입력하세요.", "오류", "OK", "Error")
return
}
$outputPath = Join-Path -Path ([System.IO.Path]::GetDirectoryName($selectedPdfPath)) -ChildPath ("encrypted_" + [System.IO.Path]::GetFileName($selectedPdfPath))
try {
Start-Process -FilePath "qpdf.exe" -ArgumentList "--encrypt `"$password`" `"$password`" 256 -- `"$selectedPdfPath`" `"$outputPath`"" -NoNewWindow -Wait
$statusLabel.Text = "★ 암호화 완료! 파일: encrypted_" + [System.IO.Path]::GetFileName($selectedPdfPath)
} catch {
$statusLabel.Text = "☆ 암호화 실패: $_"
}
})
# 폼 실행
$form.Topmost = $true
$form.Add_Shown({ $form.Activate() })
[void]$form.ShowDialog()