在 JavaScript 中优化 PDF

PDF 文件是一种普遍存在的文档共享格式,但它们有时可能会很大,导致加载时间变慢并增加存储要求。优化 PDF 文件对于确保无缝的用户体验至关重要,尤其是在 Web 应用程序中。因此,在这篇博文中,我们将探讨如何使用 JavaScript 优化 PDF 文件。

用于优化 PDF 的 JavaScript 库

对于 JavaScript 应用程序中的 PDF 优化,我们将使用 Aspose.PDF for JavaScript。它是一个功能强大的库,允许开发人员使用 JavaScript 处理、操作和优化 PDF 文件。因此,让我们首先安装该库。

下载 该库并按照此处提供的安装说明进行操作:如何安装 Aspose.PDF for JavaScript

在 JavaScript 中优化 PDF

在深入研究 PDF 优化过程之前,让我们先了解一下为什么优化 PDF 文件至关重要:

  • 更快的加载时间:优化的 PDF 加载速度更快,通过减少等待时间来增强用户体验。
  • 带宽效率:较小的文件大小可减少带宽消耗,从而更轻松地共享和下载 PDF。
  • 存储空间:优化后的PDF占用更少的存储空间,这在处理大量文档时尤为重要。

现在让我们按照以下步骤编写脚本来优化 PDF 文件。

  • 首先,选择需要优化的PDF文件。
  • 然后,创建一个 FileReader 对象来读取文件。
  • 之后,调用AsposePdfOptimize函数来优化PDF。该函数的参数包括生成的 PDF 文件的名称。
  • AsposePdfOptimize函数返回一个JSON对象,使用json.errorCode,您可以检查PDF文件是否优化成功。如果错误代码为 0,则 PDF 已优化,没有任何问题。否则,会发生错误,您可以从 json.errorText 中读取该错误。
  • 最后,调用DownloadFile函数生成优化后的PDF文件的链接。

以下代码片段展示了如何在 JavaScript 中优化 PDF 文件。

var ffileOptimize = function (e) {
  const file_reader = new FileReader();
  file_reader.onload = (event) => {
    
    /*optimize a PDF-file and save the "ResultOptimize.pdf"*/
    const json = AsposePdfOptimize(event.target.result, e.target.files[0].name, "ResultOptimize.pdf");
    if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
    else document.getElementById('output').textContent = json.errorText;
    
    /*make a link to download the result file*/
    DownloadFile(json.fileNameResult, "application/pdf");
  };
  file_reader.readAsArrayBuffer(e.target.files[0]);
};

在 PDF 优化中使用 Web Worker

在上一节中,我们只是加载了一个 PDF,对其进行了优化,然后下载了生成的 PDF。现在,让我们使用 Web Worker 来使优化过程更加顺畅并防止 UI 线程被阻塞。以下脚本展示了如何编写一个使用我们在上一节中编写的 PDF 优化功能的 Web Worker。

/*Create Web Worker*/
const AsposePDFWebWorker = new Worker("AsposePDFforJS.js");
AsposePDFWebWorker.onerror = evt => console.log(`Error from Web Worker: ${evt.message}`);
AsposePDFWebWorker.onmessage = evt => document.getElementById('output').textContent = 
  (evt.data == 'ready') ? 'loaded!' :
    (evt.data.json.errorCode == 0) ?
      `Result:\n${DownloadFile(evt.data.json.fileNameResult, "application/pdf", evt.data.params[0])}` :
      `Error: ${evt.data.json.errorText}`;

/*Event handler*/
const ffileOptimize = e => {
  const file_reader = new FileReader();
  file_reader.onload = event => {
    
    /*Optimize a PDF-file and save the "ResultOptimize.pdf" - Ask Web Worker*/
    AsposePDFWebWorker.postMessage(
      { "operation": 'AsposePdfOptimize', "params": [event.target.result, e.target.files[0].name, "ResultOptimize.pdf"] },
      [event.target.result]
    );
  };
  file_reader.readAsArrayBuffer(e.target.files[0]);
};

/*Make a link to download the result file*/
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 = "Click here to download the file " + filename;
    document.body.appendChild(link); 
    document.body.appendChild(document.createElement("br"));
    return filename;
  }

在 JavaScript 中优化 PDF 资源

优化 PDF 文件的另一种方法是删除未使用的资源并将公共资源连接到单个对象中。为了优化PDF资源,Aspose.PDF提供了AsposePdfOptimizeResource函数。以下代码片段演示了如何在 JavaScript 中优化 PDF 资源。

var ffilePdfOptimizeResource = function (e) {
  const file_reader = new FileReader();
  file_reader.onload = (event) => {
    
    /*Optimize resources a PDF-file and save the "ResultPdfOptimizeResource.pdf"*/
    const json = AsposePdfOptimizeResource(event.target.result, e.target.files[0].name, "ResultPdfOptimizeResource.pdf");
    if (json.errorCode == 0) document.getElementById('output').textContent = json.fileNameResult;
    else document.getElementById('output').textContent = json.errorText;
    
    /*Make a link to download the result file*/
    DownloadFile(json.fileNameResult, "application/pdf");
  };
  file_reader.readAsArrayBuffer(e.target.files[0]);
};

获取免费的 JavaScript PDF 库

获取免费的临时许可证 并不受任何限制地使用我们的 JavaScript PDF 优化库。

结论

优化 PDF 文件对于确保 Web 应用程序的最佳性能和用户体验至关重要。 Aspose.PDF for JavaScript 提供了一套强大的工具来有效优化 PDF 文档。在这篇博文中,我们为您提供了一种使用 JavaScript 优化 PDF 文件的易于实现的方法。通过使用这种 PDF 优化方法,您可以显着改善 Web 应用程序中的整体文档管理。

文档 中探索有关我们的 JavaScript PDF 库的更多信息。如果您有任何疑问,请通过我们的论坛与我们分享。

也可以看看