PDFKit (Node.js) 中使用的度量单位是什么?例如我们使用:
doc.text(20, 20, 'Message')
20(x)
和20(x)
代表什么?是厘米、毫米还是英寸?我可以将其更改为任何熟悉的格式,例如cm
,mm
或inch
吗?
有任何想法吗?
PDFKit (Node.js) 中使用的度量单位是什么?例如我们使用:
doc.text(20, 20, 'Message')
20(x)
和20(x)
代表什么?是厘米、毫米还是英寸?我可以将其更改为任何熟悉的格式,例如cm
,mm
或inch
吗?
有任何想法吗?
作为大多数 PDF 生成器(如果没有的话),PDFKit 也使用点,如官方文档中的添加页面部分中所述,作为PDF 点:
布局属性可以是纵向(默认)或横向。size 属性可以是指定 [width, height] 的数组,单位为 PDF points (72 per inch),也可以是指定预定义大小的字符串。可以在此处查看预定义的纸张尺寸列表。默认为字母。
...
您可以通过两种方式设置页边距。第一种是将边距属性(单数)设置为一个数字,它将边距应用于所有边缘。另一种方法是将边距属性(复数)设置为具有顶部、底部、左侧和右侧值的对象。默认值为所有边的 1 英寸(72 磅)边距。
该单位不仅适用于指定布局尺寸时,而且适用于任何类型的编号单位用于修改生成的 PDF 时。 (例如绘制文本、图像、矢量等)
由于PDF是从PostScript派生的,它内部也使用相同的图形模型,包括与 PostScript 相同的基本测量单位,即点 ( 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尺寸页面的像素大小为:
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');
您可以找到一张带有相应尺寸的纸张尺寸表(以磅为单位)。此表适用于 PDFKit 和大多数(如果不是的话)PDF 生成器。