본문 바로가기
개발 일지/PDF 파일 번역 프로그램

PDF 파일 번역 프로그램 - PDF 파일 분할(javascript)

by tls1107 2024. 4. 18.
728x90
반응형

파일 분할 기능 개발 시작!

일단 여러 블로그와 스택 오버플로우를 검색해봐도 자세한 내용은 찾기 어려웠다.

그래서 나의 오랜만에 나의 가장 친한 친구 ChatGPT 를 켰다.

자바스크립트로 PDF 파일 분할 코드를 알려달라고 해도 정확한 코드가 한번에 안 나와

예시 코드와 여러가지 질문들을 이어가며 수정에 수정을 거쳐 마침내 분할 코드를 완성할 수 있었다.

아래에 예시 코드는 PDF 파일을 20페이지 단위로 분할하는 코드이다.

import { PDFDocument } from 'pdf-lib';

const splitPDFs = [];
const pdfBytes = await file.arrayBuffer();
// file은 브라우저 상에 업로드 한것을 가져왔다
const pdfDoc = await PDFDocument.load(pdfBytes);
const pageCount = pdfDoc.getPageCount();

const splitPDF = async (pdfBytes, pageCount, pdfDoc, splitPDFs) => {
    try {
      if (!pdfBytes) {
        console.error('PDF 파일을 읽을 수 없습니다.');
        return;
      }

      for (let i = 0; i < pageCount; i += 20) {
        const startPageIndex = i;
        const endPageIndex = Math.min(i + 20, pageCount);
        var pages = Array.from({ length: endPageIndex - startPageIndex }, (v, k) => k + startPageIndex);

        const splitDoc = await PDFDocument.create();
        const copiedPages = await splitDoc.copyPages(pdfDoc, pages);
        copiedPages.forEach((page) => splitDoc.addPage(page));
        const splitPDFBytes = await splitDoc.save();
        splitPDFs.push(splitPDFBytes);
      }

    } catch (error) {
      console.error('파일 분할 오류:', error);
      alert('파일 분할 중 오류가 발생했습니다.');
    }
  }

 

 

728x90
반응형

댓글