PDF.js 插入图像

Posted

技术标签:

【中文标题】PDF.js 插入图像【英文标题】:PDF.js Inserting Images 【发布时间】:2012-07-29 20:26:35 【问题描述】:

顺便说一句,我已经开始使用PDF.js了,非常棒的作品。

但现在我想在 pdf 页面上插入一个图像(来自一个画布元素)。这是我的代码:

var image = myCanvas.getContext('2d').getImageData(0,0,400,300),
doc = new pdf();
doc.setProperties(
    title: fileName,
    author: 'VirtuaLab®',
    creator: 'pdf.js'
);
doc.addPage();
data = doc.output();

但我还没有找到任何关于在 PDF.js 页面上插入图像的信息。

可能是doc.image()doc.addImage

【问题讨论】:

最常见的用例是通过自定义外观流插入图像作为标记注释,这样您就不需要编辑实际的 pdf 页面内容。更多信息:pspdfkit.com/blog/2018/what-are-appearance-streams 【参考方案1】:

如果我正确理解您的问题,您想在 pdf.js 中使用 <img> 而不是 <canvas>

所以这是我对这个问题的解决方法,将返回的图像插入到画布中,给画布一个display: none;

然后使用canvas元素的.toDataURL()方法为你的img获取src

var canvas = document.getElementById("myCanves");
var img = document.getElementById("myImg");
img.src = canvas.toDataURL();

我希望这会有所帮助。

【讨论】:

【参考方案2】:

免责声明:我为Bytescout工作

很遗憾,PDF.js 不能处理图像,这就是我们开发 PDF Generator SDK for javascript(非商业用途免费)的原因,您可以在其中添加图像(来自 url 或画布),如下所示:

// load image from local file
pdf.imageLoadFromUrl('image1.jpg');
// place this mage at given X, Y coordinates on the page
pdf.imagePlace(20, 40);

重要的是,您可能会面临图像大小的限制,因为 BytescoutPDF.js 可能会消耗内存来处理大图像(此问题是由 javascript 的内存限制引起的)。

但是,如果您只需要在生成的 pdf 中插入徽标图像或小图片,脚本应该可以正常工作。

更新:最新版本的jsPDF(不要与PDF.js 混淆)似乎可以处理图像,请参阅examples page 上的示例。

【讨论】:

你好@Eugene 我们可以添加带有图像的html(或div)来生成pdf吗?我可以分享一些代码示例。提前致谢。 @PlanetHackers in bytescout 简单的 html 格式支持文本和链接,但不支持图像,不幸的是。可以使用 .imagePlace() 方法放置图像

以上是关于PDF.js 插入图像的主要内容,如果未能解决你的问题,请参考以下文章

PDF.js 如何取到PDF的目录页码

如何创建pdf的buffer,让pdf.js实现预览pdf文件

在线查看PDF文件,pdf.js使用方法

pdf.js使用小结

使用 PDF.js 生成 pdf 的缩略图

解决pdf.js无法完全显示pdf文件内容的问题