【发布时间】: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