AI 해결 노트 · 2026-09-18 · 실측 2026-09-18
엑셀을 PDF로 저장하면 오른쪽 열이 잘릴 때 — 너비 1페이지 맞춤 실측
한 줄로
12열짜리 표를 손대지 않고 PDF로 저장하니 A4 6쪽이 나오고 1쪽에는 앞의 5열만 담겼습니다. 용지를 가로로 바꾸니 4쪽에 7열, 여기에 「너비: 1페이지」를 더하니 2쪽에 12열이 전부 들어갔습니다. 용지 방향만으로는 모자랐고, 배율을 자동 맞춤으로 돌려야 잘림이 없어졌습니다.
증상
- 열이 많은 표를 PDF로 저장하면 오른쪽 몇 개 열이 다음 쪽으로 넘어갑니다.
- 쪽수가 예상보다 몇 배로 늘어납니다. 저희 시험에서는 45행짜리 표 하나가 6쪽이 됐습니다.
- 넘어간 열이 실린 쪽에는 그 열의 이름이 함께 붙지만, 행이 이어지는 쪽(2·4·6쪽)에는 열 이름이 하나도 없습니다.
실측 환경
| 항목 | 값 |
|---|---|
| OS | Microsoft Windows 11 Home 10.0.26200 (build 26200) |
| 셸 | PowerShell 7.6.6 |
| 엑셀 | Excel 16.0, build 20326, 언어 코드 82 |
| 기본 프린터 | Ne01:에 있는 Hancom PDF |
| 시험 파일 | 직접 만든 더미 매출표 — 12열 × 45행(머리글 포함 46행), UsedRange A1:L46 |
| 열 구성 | 거래일자·거래처코드·거래처명·담당자·지역·품목코드·품목명·규격·수량·단가·공급가액·부가세 |
| PDF 저장 | Excel COM Worksheet.ExportAsFixedFormat(0, 경로) |
| 쪽수 세기 | Python 3.12.10 + PyMuPDF 1.28.0 |
거래처명·담당자·지역은 random.choice 로 고른 지어낸 값입니다(홍길동·김철수·이영희·박민수, 가나상사·다라산업 등). 회사 파일은 열지 않았습니다.
세 가지 조건으로 저장해 봤습니다
같은 파일을 손대지 않은 상태, 용지 방향만 바꾼 상태, 너비 맞춤까지 켠 상태로 각각 PDF로 저장했습니다. 아래는 실제로 돌린 스크립트에서 설정 부분만 뽑은 것입니다.
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $false
$wb = $xl.Workbooks.Open("$T\E1_매출표.xlsx")
$ws = $wb.Worksheets.Item(1)
# 조건1 — 아무것도 건드리지 않고 저장
$ws.ExportAsFixedFormat(0, "$T\E1_21_a_기본.pdf")
# 조건2 — 용지 방향만 가로 (2 = xlLandscape)
$ws.PageSetup.Orientation = 2
$ws.ExportAsFixedFormat(0, "$T\E1_21_b_가로.pdf")
# 조건3 — 가로 + 너비 1페이지 맞춤
$ws.PageSetup.Zoom = $false
$ws.PageSetup.FitToPagesWide = 1
$ws.PageSetup.FitToPagesTall = $false
$ws.ExportAsFixedFormat(0, "$T\E1_21_c_너비1.pdf")나온 PDF의 쪽수를 세고, 각 쪽 본문에 열 이름 12개 중 몇 개가 들어 있는지 확인했습니다.
import fitz
headers = ["거래일자","거래처코드","거래처명","담당자","지역","품목코드",
"품목명","규격","수량","단가","공급가액","부가세"]
doc = fitz.open("E1_21_a_기본.pdf")
p1 = doc[0].get_text()
print(doc.page_count, [h for h in headers if h in p1])결과
| 조건 | 용지 | 배율 설정 | PDF 쪽수 | 1쪽에 담긴 열 | 1쪽에서 밀려난 열 |
|---|---|---|---|---|---|
| 1 · 손대지 않음 | 세로 A4 (595×842pt) | Zoom=100 | 6쪽 | 5개 (거래일자~지역) | 7개 |
| 2 · 용지 가로 | 가로 A4 (842×595pt) | Zoom=100 | 4쪽 | 7개 (거래일자~품목명) | 5개 |
| 3 · 가로 + 너비 1페이지 | 가로 A4 (842×595pt) | Zoom=False, Wide=1 | 2쪽 | 12개 전부 | 없음 |
조건 1에서 1쪽 밖으로 밀려난 열은 품목코드·품목명·규격·수량·단가·공급가액·부가세였습니다. 이 열들은 3쪽과 5쪽에 나뉘어 실렸습니다. 2·4·6쪽은 행이 이어지는 쪽이어서 열 이름이 한 개도 없었습니다.



용지만 가로로 바꿔서는 모자랍니다
조건 1에서 PageSetup 값을 그대로 찍어 보면 이렇습니다.
Orientation = 1 (1=xlPortrait)
PaperSize = 9 (9=xlPaperA4)
Zoom = 100
FitToPagesWide = 1
FitToPagesTall = 1FitToPagesWide 가 이미 1인데도 6쪽이 나왔습니다. 조건 3에서는 조건 2에 견줘 Zoom 을 False 로, FitToPagesTall 을 False 로 바꿨고, 그때 12열이 한 쪽에 들어갔습니다.
Orientation = 2
Zoom = False
FitToPagesWide = 1
FitToPagesTall = False조건 1·2에서는 FitToPagesWide=1 이 저장돼 있었는데도 Zoom=100 인 채로 열이 여러 쪽에 나뉘었습니다. 화면의 「페이지 설정」 대화상자에서도 「확대/축소 배율」과 「자동 맞춤」이 라디오 버튼 두 개로 갈라져 있어, 한쪽을 고르면 다른 쪽 칸이 회색이 됩니다. 다만 COM으로 Zoom = $false 를 준 뒤 그 라디오가 어느 쪽으로 옮겨 가는지 화면으로 확인하지는 않았습니다.
FitToPagesTall 을 False 로 둘 때와 1로 둘 때도 재 봤습니다.
FitToPagesTall | 쪽수 | PDF 안에서 가장 많이 쓰인 글자 크기 |
|---|---|---|
False (높이는 알아서) | 2쪽 | 7.68pt |
1 (높이도 한 쪽에) | 1쪽 | 6.36pt |
1을 넣으면 한 장으로 줄어드는 대신 글자가 7.68pt에서 6.36pt로 작아졌습니다. 45행짜리 표에서 잰 값이고, 행이 더 많은 표에서는 재 보지 않았습니다.
화면에서 하는 법 (Excel 16.0 한국어)
리본에서는 페이지 레이아웃 탭 하나로 끝납니다. 이 탭에는 「테마 / 페이지 설정 / 크기 조정 / 시트 옵션 / 정렬」 다섯 그룹이 있습니다.
- 용지 방향 — 페이지 레이아웃 → 페이지 설정 그룹 → 용지 방향. 이 그룹에는 여백·용지 방향·크기·인쇄 영역·나누기·배경·인쇄 제목 버튼이 있습니다.
- 너비 맞춤 — 페이지 레이아웃 → 크기 조정 그룹. 여기에 「너비:」·「높이:」·「배율:」 칸이 있고, 손대지 않은 파일을 띄운 캡처에서는 너비와 높이가
자동, 배율이100%였습니다. 위 조건 3에 해당하는 설정은 이 너비 를1페이지로 바꾸는 것인데, 리본에서 실제로 바꿔 COM 결과와 맞춰 보지는 않았습니다.

대화상자로 하려면 「페이지 설정」 그룹 오른쪽 아래의 작은 화살표를 누릅니다. 창 제목이 「페이지 설정」이고, [페이지] 탭의 '배율' 칸에 「확대/축소 배율(A)」과 「자동 맞춤(F)」 라디오 버튼이 있습니다. 자동 맞춤 뒤에는 숫자 칸이 두 개 — 앞이 용지 너비, 뒤가 용지 높이 입니다. 저희가 캡처한 시점에는 확대/축소 배율 쪽이 켜져 있어서 자동 맞춤의 두 칸이 회색이었습니다.
![페이지 설정 대화상자 [페이지] 탭 — 확대/축소 배율과 자동 맞춤](/notes/excel-pdf-page-fit/05.png)
2쪽부터 열 이름이 사라지는 문제
조건 3의 PDF는 2쪽이었는데, 2쪽에는 열 이름이 한 개도 없었습니다. 표 중간부터 시작하니 받는 사람이 열을 알아볼 수 없습니다. 머리글 행을 쪽마다 반복시키면 됩니다.
$ws.PageSetup.PrintTitleRows = '$1:$1'이 값을 넣고 저장한 PDF는 2쪽 첫 줄도 거래일자 | 거래처코드 로 시작했습니다. 리본에서 같은 자리는 페이지 레이아웃 → 페이지 설정 그룹의 인쇄 제목 버튼입니다. 그 버튼이 그 그룹에 있는 것은 캡처로 확인했습니다. 눌렀을 때 나오는 창은 열어 보지 않았습니다.
여러 파일을 반복할 때
파일이 몇 개뿐이면 위 메뉴가 빠릅니다. 폴더를 통째로 돌릴 때만 스크립트를 쓰는데, 이때는 반복문 안에서 여는 파일과 내보낼 PDF 경로를 파일마다 따로 만들고, 통합 문서를 하나씩 닫아야 합니다. 위 조각은 경로가 한 개로 고정돼 있어 그대로 반복문에 넣으면 같은 PDF를 덮어씁니다.
작업이 끝나면 $xl.Quit() 을 꼭 호출하고, 남아 있는 EXCEL 프로세스가 없는지 확인하셔야 합니다. 저희 로그에도 Quit() 뒤에 프로세스가 남은 기록이 여러 번 있고, 그중 한 번은 PID를 찍어 따로 종료했습니다.
실패한 것
- COM으로
PageSetup.Orientation = 2를 준 뒤 내보낸 PDF가 세로(595×842pt)로 나온 경우가 있었습니다. 내보내기 직전에 값을 다시 읽으면Orientation=2로 보이는데도 그랬습니다. 가로를 의도한 내보내기 21회 중 8회가 세로로 나왔습니다. - 원인을 좁히려고 「설정 직후 바로 내보내기」·「설정 후 1초 대기」·「방향을 한 번 더 지정」 세 방식을 각 3회씩 돌렸더니 앞의 둘은 3회 모두 가로, 마지막은 3회 모두 세로였습니다. 그런데 그 직전 시험에서는 「방향을 한 번 더 지정」한 쪽만 가로로 나왔습니다. 결과가 뒤집혀서 설명을 만들지 못했습니다.
- 일부 시험은 시작 전에 이미 EXCEL 프로세스가 떠 있는 상태에서 돌아갔습니다(로그에 시작 전 PID 기록). 그 프로세스가 결과에 영향을 줬는지는 확인하지 못했습니다.
- 위 표의 6쪽·4쪽·2쪽은 시점이 다른 두 번의 시험에서 같게 나왔고, 쪽 크기(595×842 / 842×595)로 용지 방향이 실제로 적용됐는지 확인한 값만 실었습니다.
- 「인쇄 제목」 버튼을 눌러 나오는 화면은 캡처하지 못했습니다. 이 글의 화면 캡처는 페이지 레이아웃 탭과 「페이지 설정」 대화상자 두 장까지이고, 그 밖의 창은 열어 본 기록이 없습니다.
확인하지 않은 것
- 리본 메뉴를 사람이 직접 눌러서 저장하는 경로는 재 보지 않았습니다. 쪽수 비교는 모두 COM 내보내기로 했습니다. 리본에서 「너비」를 1페이지로 바꿨을 때 옆의 「배율」 칸이 어떻게 바뀌는지도 보지 않았습니다.
- 「다른 이름으로 저장 → PDF」와 「인쇄 → Microsoft Print to PDF」의 결과가 같은지는 대조하지 않았습니다.
- 기본 프린터를 Hancom PDF 외의 드라이버로 바꿔서 같은 쪽수가 나오는지 확인하지 않았습니다.
- 열이 훨씬 많아 자동 배율이 한 자릿수 %까지 떨어지는 표는 시험하지 않았습니다. 이 글의 숫자는 12열 45행 하나에서 나온 값입니다.
- 엑셀 2016·2019 등 다른 버전에서 그룹·버튼 이름이 같은지 확인하지 않았습니다.