워드 · 구글 문서 · PDF로 낼 때

품앗이가 AI와 함께 일하며 남긴 기록을 다른 조직이 다시 쓸 수 있게 옮긴 글입니다. 묶음 전체는 한글 문서를 AI로 다루기에서 볼 수 있습니다.

요지

받는 사람이 한글 프로그램을 쓰지 않으면 문서는 워드, 구글 문서, PDF로 나갑니다. 세 형식 모두 「파일 안에 값이 들어갔다」와 「화면에 그렇게 보인다」가 달랐습니다. 우리 기록에 남은 함정은 대개 그 사이에서 났고, 잡아 낸 방법은 늘 실제 화면을 열어 보는 것이었습니다.

1. 워드 표는 다섯 조건이 다 있어야 의도대로 보인다

파이썬으로 워드 표를 만들면서 셀마다 너비만 적으면 구글 문서가 그 너비를 무시합니다. 기록에 따르면 한 사업계획서 표를 여덟 번 고친 끝에 정리한 조건이 다섯 가지입니다.

  1. 셀 테두리가 있는 표 양식을 지정한다
  2. 표 전체 너비를 적는다
  3. 표 배치를 고정으로 두어 자동 조정을 막는다
  4. 표 그리드의 열 너비를 다시 적는다
  5. 모든 셀에 너비를 적는다

하나라도 빠지면 표가 깨졌고, 가장 자주 빠뜨린 것은 네 번째인 표 그리드였습니다. 같은 기록에는 XML 검사가 통과했다는 보고만 하고 화면을 보지 않은 회차, 그리고 요청한 사람과 상의 없이 표를 포기하고 마크다운으로 물러선 회차가 있습니다. 표를 버리는 것처럼 방향을 바꾸는 결정은 요청한 사람의 동의를 받고 합니다. 셀 병합을 검산하는 방법은 AI가 만든 문서의 완료 판정 1절에 있습니다.

2. 마크다운과 HTML을 구글 문서로

드라이브에 올리면서 문서 형식을 「구글 문서」로 지정하면 마크다운이나 HTML이 자동으로 구글 문서로 바뀝니다. 이때 문서 이름과 들어갈 폴더는 요청 본문에 넣어야 합니다. 기록에 따르면 이 둘을 주소 뒤 조회 항목에 넣었더니 「제목 없음」으로, 폴더도 없이 올라갔습니다. 같은 파일 번호에 내용을 덮어쓰면 문서 링크가 그대로라서, 이미 알려 준 링크를 다시 돌릴 필요가 없습니다.

마크다운 표는 구글 문서의 진짜 표가 됐습니다. 30행 7열짜리 표로 확인한 기록이 있습니다. 반대로 순서도나 일정표를 그리는 코드 블록은 평문 덩어리로 떨어져 쓸 수 없었으니, 나중에 고쳐 가며 쓸 일정은 표로 씁니다.

글꼴 크기를 정하려면 마크다운을 바로 올리지 말고 HTML로 바꾸면서 스타일을 넣어 올립니다. 구글 문서는 그 스타일을 존중했습니다. 용지는 변환 직후 미국 레터 크기로 잡혀서 문서 API로 A4로 바꿔야 했습니다.

내용을 덮어쓸 때마다 용지가 레터로 돌아갑니다. 그래서 덮어쓸 때마다 A4 설정을 다시 걸었습니다. 검증은 PDF로 내려받아 쪽수와 용지 크기를 찍고 화면으로 확인하는 방식으로 했습니다.

3. HTML을 A4 PDF로

헤드리스 크롬으로 HTML을 PDF로 뽑을 때 머리글과 바닥글을 끄는 옵션 이름을 잘못 쓰면 오류 없이 무시됩니다. 기록에 따르면 그렇게 뽑은 PDF 위쪽에 날짜와 문서 제목이, 아래쪽에 퍼센트 문자로 바뀐 내 컴퓨터의 파일 경로가 길게 찍혔으니 대외 문서라면 치명적인 실수입니다.

차트를 그리는 자바스크립트는 가상 시간을 넉넉히 주어야 다 그려진 뒤에 인쇄됩니다. 한글 글꼴이 없으면 글자가 네모로 나오니 글꼴이 설치돼 있는지 먼저 봅니다. 검증은 모든 쪽을 그림으로 떠서 눈으로 합니다. 쪽수가 맞다는 것은 내용이 맞다는 증거가 아닙니다.

A4 인쇄 폭은 휴대폰 화면처럼 읽힙니다. A4의 인쇄 폭은 화면 픽셀로 약 680픽셀이라, 「900픽셀 이하면 휴대폰 배치」 같은 규칙이 인쇄에서도 켜집니다. 기록에 따르면 한 제안서의 표지 개요가 화면에서는 멀쩡했는데 PDF에서는 한 칸씩 세로로 무너졌고, 긴 조직명이 칸 밖으로 잘렸습니다. 인쇄용 규칙 안에서 배치를 다시 선언해 고쳤습니다.

같은 폭이 표에서는 다르게 터졌습니다. 첫 칸이 인쇄에서 100픽셀 남짓으로 좁아지자 조직명 한가운데가 끊겼습니다. 조직명 같은 고유명사가 들어가는 칸은 글자 수 단위가 아니라 비율로 넉넉히 잡고, 가장 긴 이름이 한 줄에 들어가는지 렌더해서 봅니다. 긴 목록 전체에 「쪽에서 나누지 말 것」을 걸면 목록이 통째로 다음 쪽으로 밀려 빈 면이 생깁니다. 한 제안서는 이것 때문에 한 쪽의 아래 40%가 비었고, 고친 뒤 12쪽이 11쪽이 됐습니다. 그 규칙은 목록 전체가 아니라 항목 하나하나에만 겁니다.

4. A4 가로로 인쇄하는 발표 자료

A4 가로 한 장을 슬라이드 한 장처럼 쓰는 자료에는 반려를 거치며 정한 세 원칙이 있습니다.

  1. 장수를 먼저 줄인다. 기록에 따르면 원문 A4 한 쪽은 슬라이드 두 장에서 두 장 반쯤이다. 네 쪽 문서를 14장으로 늘렸다가 여백만 많다는 지적을 받은 기록이 있다.
  2. 칸이 아니라 내용으로 채우고, 작은 내용을 세로 가운데에 띄워 두지 않는다.
  3. 같은 줄에 놓인 카드의 제목은 같은 높이에서 시작한다. 카드 안을 세로 가운데 정렬하면 내용 양에 따라 제목 높이가 들쭉날쭉해진다.

본문 글자는 12포인트 아래로 내리지 않습니다.

5. 발표 자료는 이미 있는 도구부터

파워포인트를 파이썬 라이브러리로 상자 좌표를 하나하나 계산해 만들면, 디자인이 AI가 만든 티가 나는 전형으로 흐릅니다. 기록에 따르면 제목 밑줄, 화면 폭을 가로지르는 색 띠, 왼쪽에 색 선을 두른 카드가 그 전형이었고, 이미 그 방식을 금지해 둔 상태에서 같은 실수를 되풀이했습니다.

그래서 그 뒤로는 HTML로 슬라이드를 짜서 PDF나 파워포인트로 내보내는 도구, 또는 공식 슬라이드 기능을 먼저 쓰는 순서를 지킵니다. 파이썬 라이브러리는 이미 있는 파일을 조금 고칠 때만 씁니다. 디자인은 색 하나가 화면을 이끌게 하고, 구조는 여백과 크기 대비로 만듭니다. 색감과 분위기는 디자인에 강한 다른 도구가 더 나을 수 있다고 품앗이는 봅니다. 그 도구로 시안을 받아 우리 도구로 옮기는 협업도 한 방법이었습니다.

처방 정리

  • 워드 표는 다섯 조건을 다 넣고, 화면에서 확인한다.
  • 구글 문서는 이름과 폴더를 요청 본문에 넣고, 덮어쓸 때마다 A4를 다시 건다.
  • PDF는 머리글과 바닥글이 꺼졌는지, 휴대폰 배치가 켜지지 않았는지 모든 쪽을 그림으로 떠서 본다.
  • 발표 자료는 장수부터 줄이고, 이미 있는 슬라이드 도구로 만든다.

도구 메모

  • 크롬 PDF: --headless --no-pdf-header-footer --virtual-time-budget=12000 --print-to-pdf=출력.pdf. 머리글을 끈다며 흔히 쓰는 --print-to-pdf-no-header는 무시된다.
  • 한글 글꼴 확인: fc-list :lang=ko.
  • 쪽 그림 뜨기: pdftoppm -r 100 -png 출력.pdf 쪽. 쪽수와 용지 크기는 pdfinfo.
  • 구글 문서 A4: 문서 API의 문서 스타일 바꾸기 요청으로 용지를 너비 595.276, 높이 841.89 포인트로 둔다.
  • 인쇄용 규칙: @media print 안에서 배치 열을 다시 선언하고, 긴 목록에는 break-inside: auto, 항목에만 avoid.

관련 노드