일반 PDF를 보관용 PDF/A로 바꾸려면 무엇을 준비하고, 변환한 파일은 어떻게 검사해야 할까요? 원본을 남긴 채 PDF/A-2b 사본을 만들고, 같은 사본을 veraPDF에서 검사하는 과정을 살펴보겠습니다.
예제는 한글·영문·숫자, 네 항목의 표와 작은 색상 도형을 넣어 만든 가상 문서입니다. 실제 사람이나 기관의 업무 기록은 포함하지 않았습니다. Windows에서 Ghostscript 10.07.0, veraPDF 1.30.3, Java 17.0.20.1 환경으로 진행했습니다.
아래 결과는 새로 실행한 검사가 아니라 2026년 10월 12일의 기존 CLI 검사 결과입니다. 원본과 사본을 PDF24 Reader에서 열고 기존 XML 보고서를 메모장에서 확인한 실제 화면을 함께 실었습니다. 설치 과정이나 veraPDF GUI를 새로 실행한 화면은 아닙니다.
목차
원본을 남기고 목표 규격 고르기
보관 사본을 만들 때는 어떤 PDF/A 규격을 선택해야 할까요? PDF/A는 PDF의 장기 보관을 위한 요구사항과 제한을 정한 규격입니다. 파일 이름을 바꾸거나 일반 PDF로 다시 저장하는 것만으로 규격을 충족했다고 판단할 수는 없습니다.
Ghostscript는 PDF/A-1b·2b·3b를 생성합니다. 제출처가 a·u나 PDF/A-4를 지정했다면 이 예제의 2b로 대신하지 마세요.
참조: Ghostscript의 PDF/A 생성 지원 범위
변환할 원본은 따로 보관하고, 사본에는 다른 이름을 붙입니다. 예제에서는 문자 매핑을 보완한 AIWT-PDFA-Example-Original-v2.pdf를 입력으로 사용하고 AIWT-PDFA-Example-2b-v2.pdf를 별도로 만들었습니다.
PDF/A는 파일 암호화를 허용하지 않습니다. 이 예제는 암호가 없는 PDF로 진행했으며, 암호를 해제하거나 다른 사람의 문서에 접근하는 방법은 다루지 않습니다.
참조: PDF/A의 암호화 제한
원본을 남겨 두고 보관 사본의 목표를 PDF/A-2b로 정하세요. 다른 규격이 지정된 문서라면 그 규격을 지원하는 변환 방법과 검사 프로필을 사용해야 합니다.
변환 도구와 색상 정의 파일 준비하기
실행 전에는 어떤 도구와 파일이 필요할까요? Ghostscript의 콘솔 실행 파일, veraPDF의 CLI 파일과 정상 동작하는 Java 환경을 준비합니다. 예제의 Ghostscript는 설치된 PDF24 폴더 안의 독립 구성요소를 사용했습니다. PDF24 온라인 도구나 Creator 화면을 자동 조작한 과정은 아닙니다.
veraPDF 공식 설치 안내에서 설치기와 Java 조건을 확인할 수 있습니다. 예제에서는 기존의 축소된 Java 구성으로 시작할 때 오류가 발생했으며, 별도로 준비한 Java 17.0.20.1 환경에서 veraPDF 1.30.3의 버전 조회와 검사를 진행했습니다. 설치 경로와 Java 버전 숫자만 확인하지 말고 선택한 환경으로 --version이 정상 출력되는지 확인하세요.
참조: veraPDF 설치 안내, veraPDF 시작 안내
설치된 srgb.icc의 절대 경로를 아래 ICCProfile에 넣고 PDFA_def-srgb.ps로 따로 저장합니다. 설치 원본은 그대로 둡니다.
참조: Ghostscript의 ICC 프로필과 정의 파일 안내
PDF/A 정의 파일 예시
%!
/ICCProfile (C:/Program Files/PDF24/gs/iccprofiles/srgb.icc) def
[/_objdef {icc_PDFA} /type /stream /OBJ pdfmark
[{icc_PDFA} << /N 3 >> /PUT pdfmark
[{icc_PDFA} ICCProfile (r) file /PUT pdfmark
[/_objdef {OutputIntent_PDFA} /type /dict /OBJ pdfmark
[{OutputIntent_PDFA} <<
/Type /OutputIntent
/S /GTS_PDFA1
/DestOutputProfile {icc_PDFA}
/OutputConditionIdentifier (sRGB)
>> /PUT pdfmark
[{Catalog} << /OutputIntents [{OutputIntent_PDFA}] >> /PUT pdfmark
/N 3은 sRGB용입니다. 다른 색상 조건에는 프로필과 변환 방식을 맞추세요.
실행 경로와 원본·sRGB 정의 파일을 준비한 뒤 변환을 시작하세요.
Ghostscript로 PDF/A-2b 사본 저장하기
정의 파일을 먼저 전달하고 예시 경로는 바꾸세요.
PowerShell 변환 명령 예시
$pdfaOutput = 'C:\PDF-A-Test\보관사본-2b.pdf'
if (Test-Path -LiteralPath $pdfaOutput) {
throw '사본이 있습니다. 출력 이름을 바꾸세요.'
}
& 'C:\Program Files\PDF24\gs\bin\gswin64c.exe' -dPDFA=2 -dPDFACompatibilityPolicy=2 `
-dBATCH -dNOPAUSE -sColorConversionStrategy=RGB `
-sDEVICE=pdfwrite "--permit-file-read=C:\Program Files\PDF24\gs\iccprofiles\srgb.icc" `
"-sOutputFile=$pdfaOutput" 'C:\PDF-A-Test\PDFA_def-srgb.ps' 'C:\PDF-A-Test\원본.pdf'
if ($LASTEXITCODE -ne 0) {
throw '변환 오류입니다. 검사를 중단합니다.'
}
-dPDFA=2는 PDF/A-2입니다. 정책 2는 PDF/A 비호환 특징이 있으면 중단하며, 정책 1은 특징을 생략하므로 결과의 내용·외관을 따로 확인하세요.
참조: Ghostscript의 PDF/A 옵션과 호환 정책
예제의 최초 원본에서는 문자 매핑 193개가 한 묶음에 들어 있어 CMap 경고가 발생했습니다. 매핑의 순서와 내용을 유지한 채 100개와 93개로 나눈 새 원본 v2를 만들고 다시 변환했습니다. 새 실행에서 같은 CMap 경고가 사라진 것을 확인했으며, 아래 검사는 이 v2로 만든 사본에 대한 결과입니다. 최초 파일과 경고 기록은 보존했습니다.
변환 중 오류나 복구·생략 경고가 나오면 로그를 남기고 해당 원본을 확인하세요. 파일이 생겼다는 사실만으로 보관 사본 제작을 마무리하지 않습니다. 예제의 원본과 새 사본은 각각 한 페이지이며, 공백 차이를 제외한 추출 텍스트가 같음을 별도로 확인했습니다. 이 텍스트 대조가 화면의 외관이나 모든 내용의 정확성을 보증하지는 않습니다.


-sOutputFile로 원본과 다른 PDF/A-2b 사본을 저장한 뒤, 이 사본을 검사하세요.
같은 사본을 veraPDF로 검사하기
저장한 사본이 PDF/A-2b를 충족하는지는 어디에서 확인할까요? veraPDF에 방금 만든 출력 파일을 전달하고 --flavour 2b로 검사 목표를 명시합니다. 파일의 선언만으로 선택되는 자동 감지 대신 이번 목표를 직접 지정하는 방식입니다.
PowerShell 검사 명령 예시
$pdfaJava = 'C:\Tools\Java\bin\java.exe'
$pdfaCli = 'C:\Tools\veraPDF\bin\cli-1.30.3.jar'
$pdfaReport = 'C:\PDF-A-Test\검사결과.xml'
& $pdfaJava -jar $pdfaCli --version
if ($LASTEXITCODE -ne 0) {
throw 'veraPDF 시작 오류가 있습니다. 검사 명령을 실행하지 않습니다.'
}
# 정상 버전 출력 확인 후, 같은 사본을 검사합니다.
& $pdfaJava -jar $pdfaCli --flavour 2b --format xml $pdfaOutput |
Out-File -LiteralPath $pdfaReport -Encoding utf8
Java·CLI 경로는 실제 설치 위치로 바꾸고, $pdfaOutput은 앞에서 만든 사본을 가리키게 합니다. 버전 조회에서 오류가 나오면 다음 검사 명령을 실행하지 마세요. 검사 결과 XML에서는 profileName이 목표 규격인지, isCompliant가 true인지와 실패 항목을 읽습니다.
예제의 AIWT-PDFA-Example-2b-v2.pdf를 검사한 실제 결과는 다음과 같습니다.
| 확인 항목 | 예제의 실제 결과 |
|---|---|
| 검사 프로필 | PDF/A-2b validation profile |
| 준수 판정 | isCompliant=true |
| 통과 규칙·검사 | 144개 규칙·3,204개 검사 |
| 실패 규칙·검사 | 각각 0개 |
| 파일 읽기·실행 예외 | 각각 0건 |

규격 검사와 함께 원본·사본을 실제 사용할 크기로 열어 한글과 표가 잘 읽히고 필요한 내용이 남아 있는지도 확인하세요.
원본을 보존하고 Ghostscript에서 PDF/A-2b 사본을 따로 저장한 뒤, 같은 사본을 veraPDF의 --flavour 2b로 검사하세요. 보고서의 목표 프로필·준수 판정으로 확인하며, 제출처가 다른 규격을 지정했다면 그 변환·검사 방법을 사용하세요.

답글 남기기