4

在 Javascript 中,我使用 pdfmake 生成 pdf 文档。我从 github 上读到它支持水印,以下是我的用法,但它给了我一些随机和奇怪的字符。无论水印中提供什么文本,这些字符都是相同的。有人有想法吗?

pdf制作

在此处输入图像描述

在此处输入图像描述

4

4 回答 4

7

解决方案

例子:

var docDefinition = {
        //watermark: 'test watermark',
        watermark: {text: 'test watermark', color: 'blue', opacity: 0.3, bold: true, italics: false},
        content: [
            'Test page of watermark.\n\n',
        ]
    };
于 2018-06-26T11:47:13.650 回答
2

我不能说,因为我有解决这个问题的方法,但我已经让它为我工作了。似乎第renderWatermark()465 行或附近的函数或 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');

我能够让水印出现在正确的位置,尽管使用的是通用字体而不是我选择的任何字体。

于 2015-09-18T18:24:04.387 回答
1

我做了一些更改以使水印按我的意愿工作。以下是我在printer.js 中所做的更改

pdfKitDoc.fill('darkgray'); // Change colour
pdfKitDoc.opacity(0.3); // Change opacity as watermark was too dark for my liking

Commented out below to keep the watermark text horizontal
//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]});

// Changed width and height for proper rendering of watermark text horizontally
pdfKitDoc.addContent('' + (pdfKitDoc.page.width/2 - watermark.size.size.width/4) + ' ' + (pdfKitDoc.page.height/2 - watermark.size.size.height/4) + ' Td');

理想情况下,颜色、不透明度和文本方向应该是可配置的。

于 2016-01-07T05:14:33.410 回答
0

例子

let docDefinition = {
        //watermark: 'watermark',
        watermark: {text: 'watermark', color: 'black', opacity: 0.3, bold: true, italics: false},
        content: [
             { text: "watermark test", fontSize: 18 },,
        ]
    };
于 2021-09-08T07:36:14.960 回答