gpt4 book ai didi

javascript - 无法在使用 pdfjs 呈现 PDF 的现有 上绘制矩形

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:48 25 4
gpt4 key购买 nike

任务

在你的页面中有一个 Canvas <canvas id="pdfCanvas">为现有 Canvas 创建织物 Canvas new fabric.Canvas("pdfCanvas");有 mouse.down、mouse.up、mouse.move 方法来启用绘制矩形使用 PDF.js 在上面的 Canvas “pdfCanvas”中渲染 pdf浏览器现在显示呈现的 PDF现在在 pdf 上绘制矩形,它隐藏了渲染的 Canvas ,但它确实绘制了对象

问题

这是查看问题的 fiddle :- 运行上面的 https://jsfiddle.net/hiitskiran/wgz8qore/2/- 你可以看到织物矩形隐藏在渲染的 pdf 后面- 单击 pdf Canvas 区域以查看织物对象

最佳答案

我从你的 fiddle 中看到的是你不等待 page.render 方法的结果,它是异步的,那么不幸的是,如果你等待 page.render,fabric.canvas 实例将清理您之前填充的 Canvas ,我们对此无能为力。所以我尝试了另一种方法:首先,我等待 pdf.js page.render 方法,然后调用您之前填充的 Canvas 的 .toDataURL,以便我可以获得旧内容的副本,然后我将您之前填充的 Canvas 设置为新 fabric.canvas 的背景并完成绘制矩形。

var url = 'http://www.africau.edu/images/default/sample.pdf';
var canvas = document.getElementById('pdfcanvas');
var context = canvas.getContext('2d');
PDFJS.disableWorker = true;
PDFJS.getDocument(url).then(function(pdf) {
pdf.getPage(1).then(function(page) {
var scale = 1.5;
var viewport = page.getViewport(scale);
canvas.height = viewport.height;
canvas.width = viewport.width;
page.render({
canvasContext: context,
viewport: viewport
}).then(function() {

var bg = canvas.toDataURL("image/png");
var fcanvas = new fabric.Canvas("pdfcanvas", {
selection: false
});
fcanvas.setBackgroundImage(bg,fcanvas.renderAll.bind(fcanvas));
fcanvas.setWidth(300);
fcanvas.setHeight(300);
var rect = new fabric.Rect({
left: 100,
top: 100,
width: 50,
height: 50,
fill: '#FF454F',
opacity: 0.5,
transparentCorners: true,
borderColor: "gray",
cornerColor: "gray",
cornerSize: 5
});
fcanvas.add(rect);
fcanvas.renderAll();
});
});
});
<script src="https://rawgit.com/kangax/fabric.js/master/dist/fabric.js"></script>
<script src="https://seikichi.github.io/tmp/PDFJS.0.8.715/pdf.min.js"></script>
<canvas id="pdfcanvas" style="border:1px solid black"></canvas>

关于javascript - 无法在使用 pdfjs 呈现 PDF 的现有 <canvas> 上绘制矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40668947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com