[정보] 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 파일 명은 직접 입력해주셔야 합니다.

 

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

그럼...

반응형

동아대학교 노인복지론 특강

반응형

일시: 2025. 5. 14. 12:00-13:30

장소: 동아대학교 부민캠퍼스 종합강의동  B04(C) B113

주제: 노인복지현장의 변화와 그 현장을 이끌어갈 인재상

제목: 고찌 글라, 고찌 가(같이 가라, 같이 가)

 

노인복지현장의 변화와 그 현장을 이끌어갈 인재상(강의 교안)

 

고찌 글라, 고찌 가.pdf
1.87MB
고찌 글라, 고찌 가.pptx
12.69MB

 

* 부속 파일

첨부 자료.zip
0.12MB

반응형

[Review] Artificial Intelligence in Long-Term Care: Technological Promise, Aging Anxieties, and Sociotechnical Ageism

반응형
 제목: Artificial Intelligence in Long-Term Care: Technological Promise, Aging Anxieties, and Sociotechnical Ageism
 저자: Neves 
 학술지: Journal of Applied Gerontology
 출판연도: 2023

 

 

SCI 등재지로 국외 논문 중 피인용도가 높은 논문을 검토해, 연구 영역에서 AI가 노인과 사회복지 영역에서 어떻게 인식되고 있는지를 탐색해보고자 하였다.

 

이 논문은 인공지능(AI)이 요양시설(Long-Term Care, LTC)에서 어떻게 개발되고 활용되는지를 분석하면서, 그 과정 속에서 노인과 노화에 대한 인식, 그리고 연령차별(ageism)이 어떻게 드러나는지를 탐색하고 있다. 연구진은 AI 개발자(7), 요양시설 종사자(7), 그리고 노인 옹호자(4)를 대상으로 반구조화된 인터뷰를 진행했으며, 수집된 내용을 서사적 주제 분석(thematic narrative analysis) 방식으로 분석한 질적 연구이다.

 

논문은 두 가지 핵심 개념을 이론적 틀로 사용한다. 첫째는 기술적 약속 담론(promissory discourse)이다. 이는 AI 기술이 미래에 노인 돌봄 문제를 해결할 수 있을 것이라는 희망과 기대가 담긴 서사로, 기술의 가능성을 과장하거나 복잡한 사회적 문제를 기술만으로 해결할 수 있다고 믿게 만드는 경향을 말한다.

 

예를 들어,

“AI 스피커나 로봇이 노인의 외로움을 줄이고 가족과 연결해 줄 수 있다.”는 서사는 AI의 정서적 효과를 과장하고,

“AI가 문서작업을 대신해 요양보호사가 더 많은 시간을 환자에게 쓸 수 있다.”는 기대는 실제 기술 도입의 부담과 교육 문제를 간과한다.

“AI가 치매 환자의 고통을 인식하고 대응할 수 있다.”는 주장은 윤리적 책임, 오판 가능성, 데이터 편향 등 중요한 논의를 소홀히 한다.

 

이러한 기술 중심의 낙관은 기술만능주의(techno-solutionism)를 조장하고, 돌봄 인력 부족, 연령차별 같은 구조적 문제를 기술로 덮으려는 시도로 이어질 수 있다. 이는 곧 사회적 책임 회피, 기술 결정론의 강화, 노인 당사자의 목소리 소외라는 문제로 귀결된다.

 

둘째 개념은 노화 불안(aging anxieties)이다. 이는 개인의 노화에 대한 심리적 두려움뿐 아니라, 사회적으로 노인을 부담, 위기, 비효율로 인식하는 집단적 불안을 포함한다. 논문은 이를 개인적 차원과 사회적 차원으로 나눠 분석한다.

 

예를 들어,

AI 개발자들은 돌봄 인력이 부족해질 것이므로 AI가 필요하다며 노인 인구 증가를 사회적 위기(crisis)로 인식하고,

요양시설 종사자들은 노인들은 기술을 잘 받아들이지 못한다는 선입견을 드러내며 노인을 변화에 저항하는 존재로 설정한다.

치매에 대해 “AI가 말을 걸어주면 좋을 것이라는 서사는 치매를 노화의 실패로 바라보는 불안에서 비롯된 것이다.

이러한 노화 불안은 단순한 감정이 아닌, 정책과 기술 설계에 영향을 미치는 사회적 담론이 된다. 노인은 능동적 사용자가 아닌 수동적 수혜자로만 상상되며, "AI라도 써야 한다"는 생각은 기술 도입을 정당화하면서 노화 자체를 비용으로 환원시킨다.

 

연구 결과, 참여자들은 AI의 가능성을 높이 평가하면서도 동시에 노인을 기술에 취약한 존재로 고정해버리는 이중적 태도를 보였다. 이는 노인의 다양성과 능동성을 간과하게 만들며, 기술 설계와 운영에서 연령차별이 재생산되는 구조를 만든다. 논문은 이러한 현상을 단순한 디지털 연령차별(digital ageism)을 넘어, 사회적 편견과 기술적 설계가 얽힌 "사회기술적 연령차별(sociotechnical ageism)"로 개념화한다.

 

예를 들어,

AI 개발자는 노인들은 기술을 무서워한다는 고정관념을 갖고 기술을 설계하고,

AI 훈련 데이터에는 노인이 거의 포함되지 않아 AI가 노인을 잘 인식하지 못한다.

AI는 주로 감시, 돌봄, 알림을 위한 수단으로 활용되며, 노인이 기술의 사용자나 설계 참여자가 되는 구조는 거의 없다.

요양시설 종사자와 보호자들은 "노인들은 기술을 싫어한다"는 이유로 기술 체험의 기회 자체를 제한한다.

 

이러한 구조는 노인을 수동적이고 비기술적인 존재로 고정화하며, AI 기술이 노인의 삶을 지원하는 방식에서도 차별을 낳는다.

 

 

[내 생각]

이 논문은 기술의 미래를 밝게 그리는 기술적 약속 담론(promissory discourse)’이 얼마나 단편적일 수 있는지를 정확히 지적한다. 동시에, ‘노화 불안(aging anxieties)’이라는 개념을 통해 기술이 노인을 어떻게 대상화하고 배제하는지를 구조적으로 드러내 준다.

기술은 반드시 사회적 맥락과 함께 작동해야 하며, 그 과정에서 연령, 계층, 건강 상태 등 다양한 요인들이 교차한다는 점을 잊지 말아야 한다. 기술은 그 자체로 중립적이지 않다. 기술이 기대와 구원을 낳기도 하지만, 동시에 차별과 고정관념을 재생산할 수 있다는 점을 직시하게 되었다.

 

이제 우리는 AI가 점점 더 일상화되고, 더 많은 사회복지현장에 들어오는 시대를 맞고 있다.

ChatGPT지브리 스타일 이미지 생성이라는 문화적 실험을 통해 기술 확산의 장벽(Chasm)을 넘은 것처럼, 복지 현장도 새로운 문턱 앞에 서 있다.

 

과연 사회복지 실천은 이제 영수증에 풀을 붙이는 20세기형 행정에서 벗어날 수 있을까?

클라이언트와 세상을 연결하는 진짜스마트 복지 기술은 무엇이 될 수 있을까?

 

우리는 이제 이 질문들에 실질적인 답을 내놓아야 할 시점에 있다. 기술은 복지의 도구가 될 수도, 새로운 배제의 수단이 될 수도 있다. 따라서 누구를 위한 기술인가’, ‘누가 기술을 설계하고 사용하는가에 대한 질문을 지속적으로 던져야 한다.

 

그곳에 사회복지사의 역할이 있다.

반응형
[정보] IT정보&활용 2025. 4. 23. 12:52

[한컴한글] 제목 셀을 세로로...

반응형

한컴한글로 문서를 작성하다보면 서식을 표로 만드는 경우가 많다.

이때 제목 셀을 세로로 만들어 반복하고 싶은 경우는 없었는가?


결론부터 말해, 아직까지 한컴한글에서 이러한 방식을 공식적으로 지원하지는 않는다.

다만 약간의 편법을 사용하면, 마치 제목셀이 반복되는 것처럼 보이게 만들 수는 있다.
바로 “머리말”을 활용하는 방법이다.

1. 반복될 세로로 긴 셀을 본문에서 편집해 작업한 다음, 머리말로 만들어 넣는다. 이때 선 모양은 없음으로 한다.
2. 이제 본문에서 보여질 표를 만들어 작업한다. 이때 제일 왼쪽에 제목셀이 될 부분의 선 모양 등을 여기서 설정한다. 단 내용은 빈칸으로 한다. 


이렇게 하면 머릿글에는 내용이, 본문에는 서식이 있는 형태가 된다. 이는 마치 두 레이어를 겹쳐놓은 것과 같은 효과를 보이는데, 이를 통해 제목셀을 적용한 것처럼 보이는 결과물을 얻을 수 있다.

 

제목셀 세로로 설정하기.hwp
0.07MB



※ 덧붙여 한컴한글은 파워포인트 등과 달리 폰트를 포함해서 저장하는 기능이 없다. 
   만일 제목셀처럼 단순 반복되는 경우라면 해당 내용을 이미지로 만들어 저장하는 것이 하나의 대안이 될 수 있다.
   만일 편집이 따로 필요없다면, PDF로 만들어 배포할 수도 있을 것이다.

반응형