PDF를 PDF/A 포맷으로 변환

Aspose.PDF for JavaScript는 PDF 파일을 PDF/A 호환 PDF 파일로 변환할 수 있게 해줍니다.

변환 작업은 문서의 페이지 수에 따라 달라지며 시간이 많이 소요될 수 있습니다. 따라서 웹 워커 사용을 강력히 권장합니다.

이 코드는 리소스를 많이 소모하는 PDF 파일 변환 작업을 웹 워커로 오프로드하여 메인 UI 스레드가 차단되는 것을 방지하는 방법을 보여줍니다. 또한 변환된 파일을 다운로드하는 사용자 친화적인 방법을 제공합니다.

PDF를 PDF/A 형식으로 변환


  /*웹 워커 생성*/
    const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
    AsposePDFWebWorker.onerror = evt => console.log(`웹 워커 오류: ${evt.message}`);
    AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent = 
      (evt.data == 'ready') ? '로딩 완료!' :
        (evt.data.json.errorCode == 0) ? `결과:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}\n${DownloadFile(evt.data.json.fileNameLogResult, "application/xml", evt.data.params[1])}` : `오류: ${evt.data.json.errorText}`;

    /*이벤트 핸들러*/
    const ffilePdfConvertToPDFA = e => {
      const file_reader = new FileReader();
      file_reader.onload = event => {
        const pdfFormat = 'Module.PdfFormat.PDF_A_1A';
        /*PDF 파일을 PDF/A(1A)로 변환하고 "ResultConvertToPDFA.pdf"로 저장*/
        /*변환 과정에서 검증도 수행됨, "ResultConvertToPDFA.xml" - 웹 워커에게 요청*/
        AsposePDFWebWorker.postMessage({ "operation": 'AsposePdfConvertToPDFA', "params": [event.target.result, e.target.files[0].name, pdfFormat, "ResultConvertToPDFA.pdf", "ResultConvertToPDFA.xml"] }, [event.target.result]);
      };
      file_reader.readAsArrayBuffer(e.target.files[0]);
    };
  /// [코드 스니펫]

    /*결과 파일을 다운로드할 링크 생성*/
    const DownloadFile = (filename, mime, content) => {
        mime = mime || "application/octet-stream";
        var link = document.createElement("a"); 
        link.href = URL.createObjectURL(new Blob([content], {type: mime}));
        link.download = filename;
        link.innerHTML = "파일 다운로드를 위해 여기를 클릭하세요 " + filename;
        document.body.appendChild(link); 
        document.body.appendChild(document.createElement("br"));
        return filename;
      }

다음 JavaScript 코드 스니펫은 PDF를 PDF/A 파일로 변환하는 간단한 예제를 보여줍니다:

  1. 변환할 PDF 파일을 선택합니다.
  2. ‘FileReader’를 생성합니다.
  3. AsposePdfConvertToPDFA 함수가 실행됩니다.
  4. 결과 파일의 이름이 설정되며, 이 예제에서는 “ResultConvertToPDFA.pdf"입니다. 변환 과정에서 검증도 수행되며, “ResultConvertToPDFA.xml"입니다.
  5. 다음으로, ‘json.errorCode’가 0이면, 지정한 이름으로 DownloadFile이 제공됩니다. ‘json.errorCode’ 매개변수가 0이 아니면, 파일에 오류가 발생하며, 이러한 오류에 대한 정보는 ‘json.errorText’ 파일에 포함됩니다.
  6. 결과적으로, DownloadFile 함수는 링크를 생성하고 사용자 운영 체제로 결과 파일을 다운로드할 수 있는 링크를 제공합니다. 로그 (xml) 파일을 다운로드할 수 있는 링크도 제공합니다.

  var ffilePdfConvertToPDFA = function (e) {
    const file_reader = new FileReader();
    file_reader.onload = (event) => {
      /*PDF 파일을 PDF/A(1A)로 변환하고 "ResultConvertToPDFA.pdf"로 저장합니다.*/
      /*변환 과정에서 검증도 수행되며, "ResultConvertToPDFA.xml"입니다.*/
      const json = AsposePdfConvertToPDFA(event.target.result, e.target.files[0].name, Module.PdfFormat.PDF_A_1A, "ResultConvertToPDFA.pdf", "ResultConvertToPDFA.xml");
      if (json.errorCode == 0)
      {
        document.getElementById('output').textContent = json.fileNameResult + "\n로그 파일 (xml 형식): " + json.fileNameLogResult;
        /*결과 파일을 다운로드할 수 있는 링크 생성*/
        DownloadFile(json.fileNameResult, "application/pdf");
      }
      else document.getElementById('output').textContent = json.errorText + "\n로그 파일 (xml 형식): " + json.fileNameLogResult;
      /*로그 (xml)를 다운로드할 수 있는 링크 생성*/
      DownloadFile(json.fileNameLogResult, "application/xml");
    };
    file_reader.readAsArrayBuffer(e.target.files[0]);
  };