먼저 확인
암호 없는 PDF 사본에 qpdf --check를 실행하고 즉시 종료 코드를 저장하세요. 0은 발견한 오류·경고 없음, 3은 경고만, 2는 처리 오류입니다. 구조 검사 통과가 화면·글자·접근성의 정상 보증은 아니므로 원본을 보관하고 문서를 별도로 열어 확인합니다.
검사 결과 읽기
- 대상·환경
- 암호 없는 PDF 사본 1개 · Windows PowerShell 5.1/7 기본 설정
- 명령 범위
- --check 단독 · 출력 PDF 경로 없음
- 종료 코드
- 0: 발견한 오류·경고 없음 / 3: 경고만 / 2: 처리 오류
- 기록 순서
- qpdf 실행 직후 $LASTEXITCODE 저장 · 전체 메시지도 보관
- 추가 확인
- 원본 보존 · 뷰어에서 페이지·내용 대조
목차
1. 검사와 결과 확인 순서
-
1. 프로그램과 사본 준비
준비한 qpdf.exe와 암호 없는 PDF 사본의 실제 위치를 확인합니다. 원본은 별도로 보관합니다.
-
2. 정확한 경로 지정
예시 경로를 자기 실행 파일과 사본 경로로 바꾸고 따옴표를 유지합니다. 공백·한글이 있는 전체 경로도 인자로 전달합니다.
-
3. 검사와 코드 저장
--check를 실행한 직후 $LASTEXITCODE를 변수에 저장합니다. qpdf가 시작하지 못했다면 이전 코드로 검사 성공을 판단하지 않습니다.
-
4. 코드와 메시지 함께 읽기
0·2·3을 표와 대조하고 경고·오류의 전체 내용을 확인합니다. WARNING 글자만으로 경고 전용 코드라고 추정하지 않습니다.
-
5. 원본과 화면 확인
검사한 사본과 원본을 보존하고 기존 PDF 뷰어에서 페이지·그림·글자·폼 등 필요한 내용을 확인합니다.
2. 사본 준비
이미 qpdf를 선택했고 PDF 내부 구조의 진단 결과를 읽으려는 경우입니다. 실행 파일의 공식 배포 선택은 프로그램 페이지에서 확인하세요. 여기서는 Windows의 기본 설정 PowerShell 5.1 또는 PowerShell 7에서 암호 없는 PDF 한 개에 단독 --check를 실행합니다.
파일 탐색기에서 원본을 보관하고 별도의 작업 폴더에 사본을 만듭니다. 같은 이름의 기존 파일을 덮어쓰지 않도록 새 위치를 선택하세요. 파일 확장자 표시와 실제 파일 이름을 확인합니다. 암호가 필요한 자료는 이 예제 대신 소유자에게 검사 가능한 사본을 요청합니다.
공식 ZIP을 사용했다면 압축을 푼 패키지의 구성 파일을 함께 유지하고 bin 폴더의 qpdf.exe를 찾습니다. 다음 경로는 예시입니다. 자기 qpdf.exe와 사본의 실제 전체 경로로 두 값을 모두 바꾸며, exe 경로의 작은따옴표를 유지합니다.
$qpdfCheckExe = 'C:\Tools\qpdf\bin\qpdf.exe'$qpdfCheckCopy = 'C:\PDF-check\sample-copy.pdf'
3. 검사 명령
& $qpdfCheckExe --check $qpdfCheckCopy$qpdfCheckExit = $LASTEXITCODE$qpdfCheckExit
호출 연산자 & 뒤에 실행 파일 변수를 두고 사본 경로를 하나의 인자로 넘깁니다. qpdf 실행 직후 종료 코드를 저장해야 다른 외부 프로그램 실행으로 값이 바뀌는 일을 피할 수 있습니다. 출력의 마지막 숫자는 저장한 코드이며 그 위의 진단 메시지도 함께 읽습니다.
이 명령에는 출력 PDF 경로나 입력 덮어쓰기 옵션이 없습니다. 검사 중 xref 재구성을 시도했다는 메시지가 나와도 고친 PDF를 저장했다는 뜻이 아닙니다. 다른 변환 옵션을 함께 넣거나 경고를 숨기는 명령에는 아래 해석을 그대로 적용하지 않습니다.
실행 실패와 검사 결과 구별
qpdf.exe를 찾지 못해 PowerShell이 명령을 시작하지 못했다면 qpdf 검사 결과가 아닙니다. 그때 남아 있는 $LASTEXITCODE는 이전 명령의 값일 수 있습니다. 경로와 구성 파일을 확인하고 qpdf가 실제로 실행한 진단을 기준으로 판단하세요. 오류 처리 설정을 바꾼 셸·자동화 스크립트에는 이 기본 설정 예제를 그대로 일반화하지 않습니다.
4. 종료 코드
| 코드 | 의미·다음 행동 |
|---|---|
| 0 | qpdf가 오류·경고를 발견하지 않았습니다. 검사하지 못하는 문제는 남을 수 있으므로 실제 내용을 별도로 확인합니다. |
| 3 | 오류 없이 경고가 나왔습니다. 경고 전문을 확인하고 문서의 열림·표시와 생성 경로를 대조합니다. |
| 2 | 처리 오류가 있습니다. 경고도 함께 나올 수 있으므로 마지막 오류·입력 경로·암호 등 원인을 함께 확인합니다. |
0은 문법·스트림 인코딩에서 발견한 문제가 없다는 범위로 읽습니다. PDF 표준 준수·화면 렌더링·글자 추출·접근성·모든 폼의 정상 동작을 보증하는 값은 아닙니다. WARNING이라는 문자열이 있어도 뒤에 오류가 있으면 2일 수 있습니다.
이 표는 --check 단독 실행의 기본 코드입니다. --is-encrypted나 --requires-password 등 다른 검사 옵션은 다른 종료 코드 규칙을 사용합니다. 경고를 종료 코드 0으로 바꾸는 옵션을 넣은 결과와도 구별하세요.
5. 메시지 구별
| 관찰 | 해석·다음 행동 |
|---|---|
| File is not linearized | 웹 열람 최적화 상태를 알리는 문구입니다. 이 한 줄만으로 손상을 판정하지 않습니다. |
| xref·damaged·reconstruct 경고 | 내부 참조 구조의 문제나 재구성 시도가 보고될 수 있습니다. 경고와 실제 표시를 확인하며 자동 복원 완료로 읽지 않습니다. |
| 입력 파일을 열지 못함 | 경로·파일 존재·권한을 먼저 확인합니다. 모든 코드 2를 PDF 내부 손상으로 단정하지 않습니다. |
| 암호가 필요하다는 오류 | 이 예제의 암호 없는 입력 조건에 맞지 않습니다. 소유자에게 검사 가능한 사본을 요청합니다. |
| PowerShell의 실행 파일 호출 오류 | qpdf가 시작했는지부터 확인합니다. 이전 종료 코드로 성공을 판단하지 않습니다. |
코드 2라면 원본을 그대로 두고 파일을 다시 받거나 생성자에게 정상 사본을 요청할 수 있습니다. 경고가 있거나 화면이 이상한 경우에도 생성 프로그램·전송·저장 경로를 대조하세요. 이 검사를 반복하는 것만으로 손상된 내용이 복원되지는 않습니다.
6. 내용 대조
사용 중인 PDF 뷰어에서 검사한 사본의 페이지 수·그림·글자와 필요한 폼을 확인합니다. 뷰어를 새로 선택해야 한다면 SumatraPDF의 열람 범위를 비교하세요. 구조 진단과 눈으로 보는 내용 검수는 서로 다른 확인입니다.
직접 확인한 범위
qpdf 12.4.2의 공식 Windows MSVC64 ZIP으로 직접 만든 가짜 PDF 사본 세 개를 시험했습니다. 정상 문서는 0, startxref를 바꾼 사본은 재구성 경고와 3, trailer 없는 불완전 사본은 경고·오류와 2를 반환했습니다. 입력 세 파일의 SHA256과 파일 수는 같았고 새 PDF는 생성되지 않았습니다. 한글·공백 경로와 Windows PowerShell 5.1·PowerShell 7에서 경고 코드 3의 즉시 보관도 확인했습니다. 실제 손상 자료의 복원·뷰어 렌더링·암호 자료를 시험한 결과는 아닙니다.
새 PDF 출력이 필요하거나 다른 페이지 작업을 하려면 qpdf 처리 범위와 공식 옵션으로 돌아가 목적을 다시 확인하세요. 이 가이드는 검사 결과 읽기까지 담당합니다.
7. 자주 묻는 질문
종료 코드 3이면 검사 실패인가요?
+
오류 없이 경고가 나왔다는 뜻입니다. 경고 전문과 문서 표시를 확인해야 하며 경고를 정상 내용 보증으로 무시하거나 곧바로 복원 실패로 단정하지 않습니다.
코드 0인데 문서의 글자나 화면이 이상할 수 있나요?
+
그럴 수 있습니다. qpdf 구조 검사가 발견하지 못하는 문제가 있으며 모든 뷰어의 표시·텍스트 추출·접근성을 보장하지 않습니다. 실제 문서를 열어 필요한 내용을 확인하세요.
File is not linearized는 손상 오류인가요?
+
웹 열람 최적화 상태를 알리는 문구입니다. 이 문구 하나로 손상을 판단하지 말고 종료 코드와 전체 경고·오류를 함께 확인하세요.
코드 2는 항상 파일이 손상됐다는 뜻인가요?
+
처리 오류의 원인은 입력 경로·권한·암호 조건 등일 수도 있습니다. 마지막 오류 메시지를 확인하며 경고 문자열만 보고 코드 3으로 분류하지 않습니다.
--check가 원본을 고쳐 저장하나요?
+
여기서 사용한 단독 검사 명령은 출력 PDF 경로나 덮어쓰기 옵션이 없습니다. 재구성 시도 메시지가 저장된 복구본을 의미하지 않으며 자체 시험에서도 입력 해시는 보존됐습니다. 다른 변환 옵션을 함께 사용하는 경우는 별도로 확인해야 합니다.
8. 참고 자료
함께 보면 좋은