我正在尝试让pdf.js在IE中运行。我几乎从pdf.js网站上的“使用base64编码PDF的Hello World”示例中复制了代码,网址为https://mozilla.github.io/pdf.js/examples/。PDF文件是倒置和镜像的。我查看了一些资料,这种情况的常见原因是多次渲染时重用画布,但我并没有这样做,我只渲染了一次,所以我真的不知道原因。
在我的HTML文档顶部,我有:
$html .= '<canvas width="600px" height="2000px" id="the-canvas"></canvas>';
那么我基本上是完全从演示中复制了JS代码,如下所示(encodedString变量是我的PDF base64字符串)
var pdfData = atob(encodedString);
// Loaded via <script> tag, create shortcut to access PDF.js exports.
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');
// Fetch the first page
var pageNumber = 1;
pdf.getPage(pageNumber).then(function(page) {
console.log('Page loaded');
var scale = 1.5;
var viewport = page.getViewport({scale: 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
var renderContext = {
canvasContext: context,
viewport: viewport
};
var renderTask = page.render(renderContext);
renderTask.promise.then(function () {
console.log('Page rendered');
});
});
}, function (reason) {
// PDF loading error
console.error(reason);
});
我真正改变的唯一一件事是注释掉了几行代码,这些代码根据视口设置画布的宽度和高度,因为它不起作用,它总是崩溃的,所以我在canvas html中内联指定了宽度和高度。
我似乎无法在这个新的stackoverflow设计中包含图片,但pdf正在呈现并出现了,但它是倒置的,文本是镜像的,就像你在镜子里看文本一样。
如果有人能给我建议,我会很感激。谢谢