JavaScript中是否有任何方法可用于使用base64编码对字符串进行编码和解码?
我正在尝试使用pdf.js从pdf渲染页面
通常,使用网址,我可以这样做:
PDFJS.getDocument("http://www.server.com/file.pdf").then(function getPdfHelloWorld(pdf) {
//
// Fetch the first page
//
pdf.getPage(1).then(function getPageHelloWorld(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
//
// Prepare canvas using PDF page dimensions
//
var canvas = document.getElementById('the-canvas');
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});
});
});
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我将文件放在base64而不是url:
data:application/pdf;base64,JVBERi0xLjUKJdDUxdgKNSAwIG9iaiA8PAovTGVuZ3RoIDE2NjUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVhLc9s2...
Run Code Online (Sandbox Code Playgroud)
怎么做到这一点?
我只能以 JSON 格式将数据发送到服务器,我需要将 PDF 文件与 JSON 中的其他表单数据一起发送。我虽然我可以用 base64 从它制作一个字符串,就像我在 SO 上找到的这个解决方案一样:
let data = {foo: 1, bar: 2};
let reader = new FileReader();
reader.readAsDataURL(pdf);
reader.onload = () => {
data.file = reader.result;
$.ajax({type: 'POST', dataType: "json", data: JSON.stringify(data), ...});
}
Run Code Online (Sandbox Code Playgroud)
但碰巧reader.result不包含整个PDF(我是否将其保存到文件而不是发送,或从服务器取回)。在文本编辑器中,内容是相同的,但二进制编辑器会说丢失了一些字节。我的浏览器可以将其加载为 pdf 并显示标题,但页面是空白的。
我也尝试过reader.readAsBinaryString自己转换为 base64 btoa,但结果相同。
编辑:CodePen 示例:https ://codepen.io/jdelafon/pen/eRWLdz ? editors = 1011
编辑:为了验证,我这样做了:
let reader = new FileReader();
reader.readAsBinaryString(pdf);
reader.onload = () => {
let blob = reader.result;
let …Run Code Online (Sandbox Code Playgroud) 有没有办法在.NET中为POST WebAPI请求发回文件(.pdf)和JSON数据?