繁体   English   中英

在将其上传到 s3 之前将 pdf 转换为图像

[英]Convert pdf to image before uploading it to s3

我在 React js 中有一个当前设置,我使用分段上传作为缓冲区将文件上传到 s3。但是,如果文件格式是 pdf、视频、音频等。我想在上传到 s3 之前将其转换为图像; 将其视为缩略图生成。我已经阅读了很多相关内容,但找不到适合我需求的正确解决方案,请问有人可以提出一些可能的解决方案吗?(根本不涉及后端)PS:我看过 pdf。 js 但不知道如何使用它,而我的文件类型是缓冲区,它会返回什么类型,我可以用同样的方式将它上传到 S3。一个小例子会帮助英里。 提前致谢 !!

    var pdfData = buffer;
    var pdfjsLib = window['pdfjs-dist/build/pdf'];

    pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.0.943/pdf.worker.min.js';

    var loadingTask = pdfjsLib.getDocument({data: pdfData});
    loadingTask.promise.then(function(pdf) {
        console.log('PDF loaded');
        pdf.getPage(1).then(function getPageHelloWorld(page) {

            var scale = 1.5;
            var viewport = page.getViewport(scale);
            console.log('page',viewport);
            //
            // Prepare canvas using PDF page dimensions
            //
            var canvas = document.getElementById('bulk-thumbnails');
            var context = canvas.getContext('2d');
            canvas.height = viewport.height;
            canvas.width = viewport.width;

            //
            // Render PDF page into canvas context
            //
            page.render({canvasContext: context, viewport: viewport});
        });

根据pdf.js的第二个示例(在下面的链接中),您还可以使用其base64代码加载pdf文件。

https://mozilla.github.io/pdf.js/examples/index.html#interactive-examples

var pdfData = atob('PDF file in Base64...');
var pdfjsLib = window['pdfjs-dist/build/pdf'];

// The workerSrc property shall be specified.
pdfjsLib.GlobalWorkerOptions.workerSrc = '//mozilla.github.io/pdf.js/build/pdf.worker.js';

// Using DocumentInitParameters object to load binary data.
var loadingTask = pdfjsLib.getDocument({data: pdfData});
loadingTask.promise.then(function(pdf) {
  console.log('PDF loaded');
});

要将pdf文件作为base64代码加载,您实际上可以像这样使用HTML5 FileReader

function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     console.log(reader.result);
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}

var file = document.querySelector('#files > input[type="file"]').files[0];
getBase64(file); // prints the base64 string

参考如何在JavaScript中将文件转换为base64?

希望能帮助到你

我在上面的链接上构建了一个功能,检查一下

堆栈闪电战

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM