javascript - 在用 JavaScript 上传之前减小 PDF 文档大小?

标签 javascript pdf

<分区>

我正在上传一份文档 (PDF),其中主要包含在 CamScanner(CS) 应用程序的帮助下从手机摄像头现场拍摄的图像。

我可以处理图像文件上传以减小图像的大小,但我无法在上传前减小 PDF 文档的大小。

根据多个来源的建议,一种方法是调整图像文件的大小,使用 jspdf 生成 PDF 文件并开始上传 PDF 文件。

// Compress image and convert to pdf

function resizeBase64Img(base64, width, height) {
    var canvas = document.createElement("canvas");
    canvas.width = width;
    canvas.height = height;
    var context = canvas.getContext("2d");
    var deferred = $.Deferred();
    $("<img/>").attr("src", "data:image/gif;base64," + base64).on('load',function() {
        context.scale(width/this.width,  height/this.height);
        context.drawImage(this, 0, 0); 
        deferred.resolve($("<img/>").attr("src", canvas.toDataURL()));               
    });
    return deferred.promise();    
}

//select my image in base64
var imageStr64 = "/9j/4RiDRXhpZgAATU0AKgA...";
//resize image, add image and create the pdf
resizeBase64Img(imageStr64, 1000, 1000).then(function(newImg){
    var doc = new jsPDF();
    doc.addImage($(newImg).attr('src'), 15, 90, 180,180);
    doc.save('mypdf.pdf');
});

但是,我想清楚地区分上传图像和上传 PDF 文档,但除了几个在线 PDF 压缩器(例如 this one),我找不到任何开源库或答案。 .

这样做有可能吗?请在这方面提出建议并帮助我,谢谢。

最佳答案

肯定有许多开源 CLI 实用程序可用于压缩 PDF,例如这个用 Java 编写的:https://github.com/pts/pdfsizeopt .您可以使用 WebAssembly 和 Service Worker 让这些 CLI 实用程序之一在客户端浏览器中本地运行,正如谷歌最近用 squoosh.app 演示的那样.

这是他们描述如何执行此操作的视频:https://www.youtube.com/watch?v=ipNW6lJHVEs

或者您可以将未压缩的 PDF 上传到您的服务器,然后使用开源 CLI 实用程序在服务器上对其进行压缩。希望对您有所帮助!

关于javascript - 在用 JavaScript 上传之前减小 PDF 文档大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53543571/

相关文章:

javascript - 在 Google 脚本中保存 PDF "Blobs"

java - iText PDF - 如何添加多行页脚?

javascript - 将 php 数组传输到 javascript 时出错

javascript - 从 PHP 中的 UTF-8 字符串中删除控制字符

javascript - 检测页面是在三星股票浏览器中查看还是作为独立的网络应用程序查看

javascript - 当页面内容通过无限滚动更新时,下一个图像不起作用

c# - 如何合并多个pdf文件(在运行时生成)?

javascript - 在一个网页上使用不同组的幻灯片进行幻灯片放映

php - 使用 php 解析 pdf

html - 在NetSuite中,如何在高级PDF/HTML模板中打印相关记录