简体   繁体   English

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

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

I want to tricker a png file download with base64 pdf data.我想用 base64 pdf 数据欺骗 png 文件下载。 How to do so?怎么做? That's my script:那是我的脚本:

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();

Here is a fiddle:这是一个小提琴:

https://jsfiddle.net/duejg9n3/ https://jsfiddle.net/duejg9n3/

Do I need to use this pdf.js library?我需要使用这个 pdf.js 库吗? https://jsfiddle.net/pdfjs/cq0asLqz/ https://jsfiddle.net/pdfjs/cq0asLqz/

You basically need to do two things before you can download a PNG image:在下载 PNG 图像之前,您基本上需要做两件事:

  1. Decode the base64 string to obtain the PDF解码base64字符串得到PDF
  2. Convert the PDF to PNG将 PDF 转换为 PNG

One way to do this is through using something like the LEADTOOLS Document Library (which is what I am familiar with since I work for the vendor of this toolkit).一种方法是使用LEADTOOLS 文档库之类的东西(自从我为该工具包的供应商工作以来,我就很熟悉它)。

Using this library, you can be implement the DocumentConverter class in a server-side C# code that decodes the base64 string, converts PDF to PNG, then returns the PNG output in a base64 string:使用此库,您可以在服务器端 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