繁体   English   中英

Javascript - 如何将base64 pdf数据转换并下载为png图片?

[英]Javascript - How to convert and download base64 pdf data as an png image?

我想用 base64 pdf 数据欺骗 png 文件下载。 怎么做? 那是我的脚本:

var base64pdfData = atob(
  'JVBERi0xLjcKCjEgMCBvYmogICUgZW50cnkgcG9pbnQKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAyIDAgUgo+PgplbmRvYmoKCjIgMCBvYmoKPDwKICAvVHlwZSAvUGFnZXMKICAvTWVkaWFCb3ggWyAwIDAgMjAwIDIwMCBdCiAgL0NvdW50IDEKICAvS2lkcyBbIDMgMCBSIF0KPj4KZW5kb2JqCgozIDAgb2JqCjw8CiAgL1R5cGUgL1BhZ2UKICAvUGFyZW50IDIgMCBSCiAgL1Jlc291cmNlcyA8PAogICAgL0ZvbnQgPDwKICAgICAgL0YxIDQgMCBSIAogICAgPj4KICA+PgogIC9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKCjQgMCBvYmoKPDwKICAvVHlwZSAvRm9udAogIC9TdWJ0eXBlIC9UeXBlMQogIC9CYXNlRm9udCAvVGltZXMtUm9tYW4KPj4KZW5kb2JqCgo1IDAgb2JqICAlIHBhZ2UgY29udGVudAo8PAogIC9MZW5ndGggNDQKPj4Kc3RyZWFtCkJUCjcwIDUwIFRECi9GMSAxMiBUZgooSGVsbG8sIHdvcmxkISkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iagoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDEwIDAwMDAwIG4gCjAwMDAwMDAwNzkgMDAwMDAgbiAKMDAwMDAwMDE3MyAwMDAwMCBuIAowMDAwMDAwMzAxIDAwMDAwIG4gCjAwMDAwMDAzODAgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9TaXplIDYKICAvUm9vdCAxIDAgUgo+PgpzdGFydHhyZWYKNDkyCiUlRU9G');

var obj = document.createElement('object');
obj.style.width = '100%';
obj.style.height = '842pt';
obj.type = 'image/png';
obj.data = 'data:image/png;base64,' + base64pdfData;
document.body.appendChild(obj); 

var link = document.createElement('a');
link.innerHTML = 'Download PNG file';
link.download = 'file.png';
link.href = 'data:application/octet-stream;base64,' + base64pdfData;
document.body.appendChild(link);

//var a = document.createElement("a"); //Create <a>
//a.href = "data:image/png;base64," + base64pdfData; //Image Base64 Goes   here
//a.download = "Image.png"; //File name Here
//a.click();

这是一个小提琴:

https://jsfiddle.net/duejg9n3/

我需要使用这个 pdf.js 库吗? https://jsfiddle.net/pdfjs/cq0asLqz/

在下载 PNG 图像之前,您基本上需要做两件事:

  1. 解码base64字符串得到PDF
  2. 将 PDF 转换为 PNG

一种方法是使用LEADTOOLS 文档库之类的东西(自从我为该工具包的供应商工作以来,我就很熟悉它)。

使用此库,您可以在服务器端 C# 代码中实现 DocumentConverter class,解码 base64 字符串,将 PDF 转换为 PNG,然后在 base64 字符串中返回 PNG output:

MemoryStream ms = new MemoryStream(Convert.FromBase64String(pdfStr));
using (DocumentConverter documentConverter = new DocumentConverter())
using (LEADDocument document = DocumentFactory.LoadFromStream(ms, new LoadDocumentOptions()))
{
   MemoryStream outputStream = new MemoryStream();

   DocumentConverterJobData jobData = new DocumentConverterJobData();
   jobData.Document = document;
   jobData.RasterImageFormat = RasterImageFormat.Png;
   jobData.OutputDocumentStream = outputStream;
   jobData.JobName = "Convert to PNG Job";
   DocumentConverterJob job = documentConverter.Jobs.CreateJob(jobData);
   documentConverter.Jobs.RunJob(job);

   pngStr = Convert.ToBase64String(outputStream.ToArray());
}

暂无
暂无

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

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