Text2Store
다운로드

블로그

iMessage 대화 전체를 인쇄하는 방법(84,000개 메시지라도)

메시지가 수천 개를 넘어서는 어딘가에서 "대화 전체 인쇄"는 기능 목록의 체크박스가 아니라 기술 문제가 돼요. 많은 사람이 이걸 호되게 겪으며 알게 돼요. 포럼에는 끝없이 멈춰 있는 내보내기, 500쪽 이후로 빈 페이지가 나오는 내보내기, 그냥 죽어 버리는 내보내기 이야기가 가득해요. 저희도 호되게 겪으며 알게 됐어요. 그래서 안에서 실제로 무슨 일이 일어나는지, 그리고 84,000개 메시지 대화를 인쇄할 수 있게 하려면 무엇이 필요했는지 적어 봐요.

긴 대화가 내보내기 도구를 망가뜨리는 이유

보기 좋은 기록을 만드는 도구는 거의 다, 저희 것도 포함해서, 결국 브라우저 엔진에게 대화를 배치하고 페이지로 나누라고 맡겨요. 브라우저 인쇄 엔진은 웹 페이지를 위해 만든 거지, 몇 년 치 메시지와 수천 장의 사진이 든 문서 하나를 위한 게 아니에요. 그걸 한 번에 페이지로 나누라고 하면 세 가지가 점점 심하게 잘못돼요. 한없이 오래 걸리고, 메모리가 빠듯해지면 조용히 빈 페이지를 내놓고, 결국 렌더링 프로세스의 메모리가 바닥나 죽어요. 저희 작업의 방향을 정한 실제 사례가 있어요. 8,400개 메시지를 내보냈더니 811쪽짜리 PDF가 나왔는데 583쪽부터 비어 있었어요. 엔진은 오류를 내지 않았어요. 그냥 그리기를 멈췄어요.

효과가 있는 방법: 나누고, 확인하고, 합치기

  • 나누기. 기록은 한 번에 최대 1,500개 메시지까지 렌더링하고, 매번 별도의 부분 파일로 인쇄해요. 어떤 한 번도 한계에 닿을 만큼 커지지 않아요.
  • 빈 페이지 검사. 각 부분은 쓴 뒤에 검사해요. 엔진이 아무것도 그리지 않았다면 그 부분을 버리고 다시 시도하고, 그래도 그려지지 않는 부분은 반으로 나눠 다시 시도해요. 빈 출력이 최종 문서에 들어갈 수 없어요.
  • 튼튼한 합치기. 부분들을 PDF 하나로 이어 붙이고, 합친 파일은 쓰는 시점에 실제 PDF 리더가 문제 삼는 결함이 없는지 확인해요. 그 확인 규칙 하나하나는 실제로 망가진 내보내기에서 배운 거예요. Acrobat처럼 엄격한 리더는 너그러운 리더가 아무렇지 않게 여는 파일을 거부해요.
  • 꾸밈이 아니라 표시. 여러 부분으로 된 내보내기는 머리글에 "9개 중 3번째 부분, 84,000개 중 12,001~13,500번째 메시지"라고 적어요. 빠진 게 있으면 문서가 그렇다고 말해요.

숫자

이 모든 것의 부하 테스트는 실제 사용자의 84,000개 메시지 대화예요. 몇 년 치 문자에 사진이 곳곳에 있어요. 이게 완전하고 읽기 좋은 PDF 하나로 내보내져요. 규모를 보자면, 같은 대화가 초기 버전에서는 1.05 GB였는데 지금 엔진은 164 MB로 만들고, 사진이 많은 2,500개 메시지 대화는 평범한 데스크톱에서 약 17초 만에 내보내져요.

실제로 인쇄하기

솔직히 말하면, 인쇄 대화상자 자체도 다른 브라우저 엔진처럼 한 번에 처리하는 한계가 있어요. 그래서 아주 긴 대화라면 Text2Store는 대화상자가 실패하게 두지 않고 내보내기 > PDF…로 안내하고, 여러분은 PDF에서 전체나 필요한 페이지만 인쇄하면 돼요. 단계별 안내는 iPhone 문자 메시지를 PDF로 내보내기에 있고, 이 페이지 전체의 짧은 버전은 iPhone 문자 메시지 인쇄하기에 있어요.

궁금한 점이 있나요?

hello@text2store.com으로 메일 주세요. 너무 크다고 생각되는 대화가 있다면, 정말로 듣고 싶어요.