在Javascript中,我使用pdfmake生成pdf文档。我从github上读到它支持水印,以下是我的用法,但它给了我一些随机和奇怪的字符。无论水印中提供什么文本,这些字符都是相同的。有人有想法吗?
答案 0 :(得分:4)
解决方案
示例:
UnobservedTaskException
答案 1 :(得分:2)
我不能说因为我有解决这个问题的方法,但我已经让它对我有用了。似乎第465行或附近的renderWatermark()
函数或pdfmake.js在编码字体时遇到问题。
var encoded = watermark.font.encode(watermark.text);
返回一个空字符串,并且没有该函数稍后要查找的扩展属性。
通过更改
pdfKitDoc.addContent('/' + encoded.fontId + ' ' + watermark.size.fontSize + ' Tf');
到
pdfKitDoc.addContent('/ ' + watermark.size.fontSize + ' Tf');
和
pdfKitDoc.addContent('<' + encoded.encodedText + '> Tj');
到
pdfKitDoc.addContent('(' + watermark.text + ') Tj');
我能够将水印显示在正确的位置,虽然使用的是通用字体,而不是我选择的任何字体。
答案 2 :(得分:1)
我做了一些更改,让水印按我的意愿工作。以下是我在printer.js中所做的更改
pdfKitDoc.fill(&#39;深灰&#39); //改变颜色 pdfKitDoc.opacity(0.3); //改变不透明度,因为水印对我来说太暗了
下面注释以保持水印文字水平
// var angle = Math.atan2(pdfKitDoc.page.height,pdfKitDoc.page.width)* 180 / Math.PI; //pdfKitDoc.rotate(0, {origin:[pdfKitDoc.page.width / 2,pdfKitDoc.page.height / 2]});
//更改宽度和高度,以便水平正确呈现水印文本
pdfKitDoc.addContent(&#39;&#39; +(pdfKitDoc.page.width / 2 - watermark.size.size.width / 4)+&#39;&#39; +(pdfKitDoc.page。 height / 2 - watermark.size.size.height / 4)+&#39; Td&#39;);
理想情况下,颜色,不透明度和文本方向应该是可配置的。