빈 PDF 파일이 필요해서 찾아본 방법들

import { Canvas } from 'skia-canvas'
import { writeFile } from 'node:fs/promises'

/**
 * A4 크기의 빈 PDF 파일을 생성합니다.
 *
 * @param {string} filename - 생성할 PDF 파일의 이름입니다.
 * @returns {Promise<void>}
 */
async function createEmptyPDF(filename) {
  // A4 크기 (595x842 포인트)
  const width = 595
  const height = 842

  // 캔버스를 생성합니다
  const canvas = new Canvas(width, height)
  const ctx = canvas.getContext('2d')

  // 아무 내용도 그리지 않고 현재 상태를 저장합니다
  ctx.save()

  // 캔버스를 PDF 버퍼로 변환하여 저장합니다
  const buffer = await canvas.toBuffer('pdf')
  await writeFile(filename, buffer)
  console.log(`${filename} 파일이 생성되었습니다!`)
}

createEmptyPDF('empty_skia.pdf')

skia-canvas 는 형식을 캔버스가 아니라 내보낼 때 정한다 — createCanvas(w, h, 'pdf') 는 node-canvas 의 API 라 여기엔 없다1.


# Ghostscript를 사용한 빈 PDF 생성
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=empty.pdf -c "<< /PageSize [595 842] >> setpagedevice showpage"

# ImageMagick의 `convert` 명령어로 빈 PDF 생성
convert xc:white -page A4 empty.pdf

Footnotes

  1. Canvas | skia-canvas: “Node Buffer objects containing various image formats can be created by passing either a format string like "svg" or a mime-type like "image/svg+xml".” ↩

`#330`