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

PDF 파일 번역 프로그램 - PDF파일 병합 및 다운로드

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

파일 병합 및 다운로드 기능 개발 시작!

Firebase Storage 에서 번역이 완료된 파일들을 다운 받고 병합을 한 뒤 다운받는다.

const downloadPDF = async (pageCount, storage) => {
    try {
      const mergedPDFDocument = await PDFDocument.create();

      for (let i = 0; i < pageCount / 20; i += 1) {
        var storageRef = ref(storage, `gs://버킷명/번역완료된파일명`;
        storageRef = ref(storage, storageRef);
        const url = await getDownloadURL(storageRef);
        const arrayBuffer = await fetch(url).then(response => response.arrayBuffer());
        const pdfDocument = (await PDFDocument.load(arrayBuffer));
        const pageCount = pdfDocument.getPageCount();
        for (let pageNumber = 0; pageNumber < pageCount; ++pageNumber) {
          const [copiedPage] = await mergedPDFDocument.copyPages(pdfDocument, [pageNumber]);
          mergedPDFDocument.addPage(copiedPage);
        }
      }
      await mergePDF(mergedPDFDocument);

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

  const mergePDF = async (mergedPDFDocument) => {
    const mergedPDFBytes = await mergedPDFDocument.save();
    const mergedPDFBlob = new Blob([mergedPDFBytes], { type: 'application/pdf' });
    const downloadLink = document.createElement('a');
    downloadLink.href = URL.createObjectURL(mergedPDFBlob);
    downloadLink.download = `${file.name}_merged.pdf`;
    downloadLink.click();
  }
728x90
반응형

댓글