【发布时间】:2019-01-03 12:39:02
【问题描述】:
PDFKit (Node.js) 中使用的度量单位是什么?例如我们使用:
doc.text(20, 20, 'Message')
20(x) 和 20(x) 代表什么?是厘米、毫米还是英寸?我可以将其更改为任何熟悉的格式,例如cm、mm 或inch?
有什么想法吗?
【问题讨论】:
标签: javascript node.js printing pdfkit node-pdfkit
PDFKit (Node.js) 中使用的度量单位是什么?例如我们使用:
doc.text(20, 20, 'Message')
20(x) 和 20(x) 代表什么?是厘米、毫米还是英寸?我可以将其更改为任何熟悉的格式,例如cm、mm 或inch?
有什么想法吗?
【问题讨论】:
标签: javascript node.js printing pdfkit node-pdfkit
作为大多数 PDF 生成器(如果没有的话),PDFKit 也使用 points,正如官方文档中 Adding pages 部分中所述,作为 PDF 点:
布局属性可以是纵向(默认)或横向。 size 属性可以是指定 [width, height] 以 PDF 点数(每英寸 72)为单位 的数组,也可以是指定预定义大小的字符串。可以在此处查看预定义的纸张尺寸列表。默认为字母。
...
您可以通过两种方式设置页边距。第一种是将边距属性(单数)设置为一个数字,它将边距应用于所有边缘。另一种方法是将边距属性(复数)设置为具有顶部、底部、左侧和右侧值的对象。 默认值为 1 英寸(72 磅) 边距。
此单位不仅适用于指定布局尺寸时,也适用于任何类型的编号单位用于修改生成的PDF。 (例如绘图文本、图像、向量等)
由于PDF 派生自PostScript,它内部也使用相同的图形模型,包括与PostScript 相同的基本测量单位,即points(72 points == 1 inch)。此测量单位是使用和说明尺寸的独立于设备的方式。
您不能更改 PDFKit 的测量单位。为了使用其他单位而不是点,您必须自己计算单位并根据点乘以一个因子 .由于您未绑定到整数点,因此您也可以在指定点时使用浮点数(例如:100.15)。
如果您使用 A4 大小的页面(即8.27 × 11.69 inches 或210 × 297 mm),则其尺寸将四舍五入为595 × 842 points(简称pt):
1pt 是 ~0.35mm,或 ~0.04cm
10pt 是 ~3.53mm,或 ~0.35cm
100pt 是 ~35.28mm,或 ~3.53cm
148.75pt(四分之一页宽)为 ~52.48mm 或 ~5.25cm
297.5pt(半页宽)为~104.95mm 或~10.50cm
如果您需要像素,您的计算也必须基于特定的 DPI,因此 A4 大小的页面的像素大小: p>
72 DPI 是 595 x 842px
96 DPI 是 794 x 1123px
150 DPI 是 1240 x 1754px
300 DPI 是 2480 x 3508px
对于初学者,这是一个简单的脚本,列出了转换为您提到的点后的基本单位及其值:
function mmToPt (mm) {
return mm * 2.83465;
}
function cmToPt (cm) {
return cm * 28.3465;
}
function inchToPt (inch) {
return inch * 72;
}
const units = [
1,
2,
3,
5,
10,
15,
20,
25,
50,
100,
150,
250,
500,
1000
];
function convert (unit) {
let name;
let converter;
switch (unit) {
case 'mm':
name = 'millimeters';
converter = mmToPt;
break;
case 'cm':
name = 'centimeters';
converter = cmToPt;
break;
case 'inch':
name = 'inches';
converter = inchToPt;
break;
}
console.log(`Convert ${name} to points:`);
units.forEach(u => {
let converted = converter(u).toFixed(2);
// get rid of unneeded .00 decimals
if (+converted === parseInt(converted, 10)) {
converted = +converted;
}
console.log(`${u}${unit} is ${converted}pt, so in doc.text(${converted}, ${converted}, 'Message')`);
});
console.log('--------------------------------------------');
}
convert('mm');
convert('cm');
convert('inch');
You can find a table of paper sizes with corresponding dimensions in points. 此表适用于 PDFKit 以及大多数(如果没有的话) PDF 生成器。
【讨论】: