Aspose.PDF功能演示:在 JavaScript 中优化 PDF 文件

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

Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。

Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

在 JavaScript 中将 PDF 转换为 Excel

Aspose.pdf 最新下载(qun:666790229)icon-default.png?t=N7T8https://www.evget.com/product/4118/download

用于优化 PDF 的 JavaScript 库

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

在 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]);
};

结论

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/473570.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考网工学习笔记(6) 广域通信网

公共交换电话网(pstn) 在pstn是为了语音通信而建立的网络。从20世纪60你年代开始用于数据传输 电话网有三个部分组成: 本地回路 ,干线 和 交换机 。 干线 和 交换机 一般采用数字传输和交换技术 ,而 本地回路基本采…

Ubuntu18.04桌面版设置静态IP地址

引用: Ubuntu配置静态IP_ubuntu配置静态ip地址-CSDN博客 正文 默认Unbuntu 18.04 Desktop桌面版使用 netplan 管理网卡网络地址。使用Unbuntu 18.04 桌面版配置,可以通过桌面上的设置图标配置网卡的静态IP地址。 点击桌面右上角下拉框,点击“设置”按…

流畅的 Python 第二版(GPT 重译)(六)

第三部分:类和协议 第十一章:一个 Python 风格的对象 使库或框架成为 Pythonic 是为了让 Python 程序员尽可能轻松和自然地学会如何执行任务。 Python 和 JavaScript 框架的创造者 Martijn Faassen。 由于 Python 数据模型,您定义的类型可以…

【Linux】进程详解

目录 一、进程基本概念: 二、进程的五种基本状态: 三、Linux的进程状态: 四、控制进程状态相关指令: 五、僵尸进程与孤儿进程: 六、进程的优先级: 七、进程的四个重要特性: 八、环境变量…

ping 通ip,ping 不通域名

在linux 系统中,ping 通ip,ping 不通对应的域名时,可直接修改系统配置文件 vi /etc/hosts 加入 ip 域名

好就业三种专业#信息安全#云计算#网络工程

一、信息安全专业 根据2021年网络安全宣传周白皮书的观察结果,网络安全产业对于人才的需求正以高速增长的趋势呈现,当前网络安全行业存在着巨大的人才缺口,平均供求比例约为1:2。这一现象导致了资深人才的储备不足,并且新人才的培…

智慧校园数据可视化有什么好处?怎么推进数字化校园方案?

在当今数字化时代,越来越多学校开始实施智慧校园计划,旨在为学生和教师提供更高效、便捷的学习和教学环境。智慧校园运用互联网、大数据、人工智能等技术,对校园内各信息进行收集、整合、分析和应用,实现教学、管理、服务等多方面…

MySQL 索引的分类和优化

​ 优质博文:IT-BLOG-CN 索引是什么 : MySQL 官方对索引的定义:索引(Index)是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。索引的目的在于提高查询效率。可以简单理解为&#…

AI PPT生成工具 V1.0.0

AI PPT是一款高效快速的PPT生成工具,能够一键生成符合相关主题的PPT文件,大大提高工作效率。生成的PPT内容专业、细致、实用。 软件特点 免费无广告,简单易用,快速高效,提高工作效率 一键生成相关主题的标题、大纲、…

基于Springboot的防疫物资管理信息系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的防疫物资管理信息系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

开源表单设计器vue-form-design自动化校验实现原理

表单校验可以改善用户体验和减轻服务器的压力, 而动态配置表单校验能极大的提高动态表单的扩展性、灵活性, 满足多样性、差异化需求 目标 👌,首先我们简要说下要实现的目标功能: 具有基础的表单验证功能提供一些内置验证规则提供对外开放的…

精读《useRef 与 createRef 的区别》

1 引言 useRef 是常用的 API,但还有一个 createRef 的 API,你知道他们的区别吗?通过 React.useRef and React.createRef: The Difference 这篇文章,你可以了解到何时该使用它们。 2 概述 其实原文就阐述了这样一个事实&#xf…

ICT产品供应链安全现状分析与对策建议

本文尝试分析ICT产品供应链的安全背景、政策法规,并给出具体针对性的建议供ICT产品供应链的供需双方参考。 当今网络安全威胁和攻击的形式正在发生深刻的变化,已经从传统的网络安全领域逐渐扩展到供应链安全方向。ICT(信息通信技术&#xff…

[Qt学习笔记]Qt实现鼠标点击或移动时改变鼠标的样式以及自定义鼠标样式

1、鼠标样式介绍以及对应函数 在Qt中大概有20种左右的内置鼠标样式,一般使用setCursor(Qt::CursorShape shape)来进行设置,一般常用的有标准箭头、手型,双箭头等等形状,对于不同的操作系统下,鼠标的样式显示会略有差别…

2.Labview字符串与路径精讲(上) — 理论篇

本章讲解labview中的字符串和路径及其使用方法,从前面板字符串属性到后面板字符串函数应用做出详细概述,通过本文的学习希望大家了解到字符串在labview编程中的重要地位。 本系列文章为labview 从基础到强化到精通的学习文章,大家可以随时点进…

《Adaptive Adversarial Patch Attack on Face Recognition Models》论文分享(侵删)

原文地址:Adaptive Adversarial Patch Attack on Face Recognition Models | IEEE Conference Publication | IEEE Xplore author{Bei Yan and Jie Zhang and Zheng Yuan and Shiguang Shan}, title{Adaptive Adversarial Patch Attack on Face Recognition Models…

springcloud-Eureka注册中心

如果你要理解这个技术博客博客专栏 请先学习以下基本的知识: 什么是微服务什么是服务拆分什么是springcloud Springcloud为微服务开发提供了一个比较泛用和全面的解决框架,springcloud继承了spring一直以来的风格——不重复造轮子,里面很多的…

c++ 指针大小

C的一个指针占内存几个字节? 结论: 取决于是64位编译模式还是32位编译模式(注意,和机器位数没有直接关系) 在64位编译模式下,指针的占用内存大小是8字节在32位编译模式下,指针占用内存大小是4字…

JavaScript 使用 Promise 实现 sleep 休眠

以下为代码实现&#xff0c;该代码实现了每隔1秒打印一次当前时间&#xff0c;总共打印5次的功能 for(let i 1; i < 5; i){console.log(new Date().toString())await new Promise(resolve>setTimeout(resolve,1000)) }实现休眠的核心代码为: await new Promise(resolv…

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测

回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SAO-LSTM雪消融算法优化长短期记忆神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SAO-LSTM雪消融…