【问题标题】:Reduce PDF Document Size before Uploading in JavaScript? [closed]在 JavaScript 中上传之前减小 PDF 文档大小? [关闭]
【发布时间】:2018-11-29 16:31:56
【问题描述】:

我正在上传一份文档 (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。

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

【问题讨论】:

  • 请注意,.load() 事件侦听器快捷方式已被弃用。不确定您使用的是哪个 jQuery 版本,但首选 .on('load'
  • @charlietfl 谢谢我已经相应地更新了我的问题,
  • @charlietfl 那么是否可以调整 pdf 文件的大小?我想在 pdf 文件中压缩和图像,就像我们在图像文件上所做的一样,有可能吗?我们该怎么做?谢谢
  • 嗨!您是否为此找到了可行的解决方案?我也在寻找一种在客户端优化和压缩 pdf 文件的方法。
  • @Clox,我还没有找到合适的解决方案。谢谢

标签: javascript pdf


【解决方案1】:

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

这是他们描述如何做到这一点的视频:https://www.youtube.com/watch?v=ipNW6lJHVEs

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

【讨论】:

  • 谢谢,我将在我的本地 PC 上尝试一下,它对我来说对 WebAssembly 来说是全新的,但是在我用户的机器上部署似乎很困难。如果您可以提供一个这样做的javascript包或插件会更好,更重要的是,我只想在客户端脚本发送到服务器端之前执行此操作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2012-01-10
相关资源
最近更新 更多