如何使用 pdfmake 对齐图像?
How do I align an image with pdfmake?
我正在使用 pdfmake 创建 PDF,并已成功使用数据 URI 嵌入图像。这是一张小图片,大约 200 像素,我想让它右对齐。有什么方法可以将图像推到 PDF 的右侧吗?
您可以在文档定义中使用 pre-defined 样式右对齐图像。 pdfmake playground 有一个很好的图像示例,我编辑它以在下面添加 'right aligned' 样式(称为 'rightme')。我尝试直接将 'alignment: right' 添加到文档定义中,但这不起作用。
由于长度原因我删除了图像数据 - 访问pdfmake playground图像以查看其工作情况:
var dd = {
content: [
'pdfmake (since it\'s based on pdfkit) supports JPEG and PNG format',
'If no width/height/fit is provided, image original size will be used',
{
image: 'sampleImage.jpg',
},
'If you specify width, image will scale proportionally',
{
image: 'sampleImage.jpg',
width: 150
},
'If you specify both width and height - image will be stretched',
{
image: 'sampleImage.jpg',
width: 150,
height: 150,
},
'You can also fit the image inside a rectangle',
{
image: 'sampleImage.jpg',
fit: [100, 100],
pageBreak: 'after'
},
// Warning! Make sure to copy this definition and paste it to an
// external text editor, as the online AceEditor has some troubles
// with long dataUrl lines and the following image values look like
// they're empty.
'Images can be also provided in dataURL format...',
{
image: **'IMAGE TRUNCATED FOR BREVITY'**,
width: 200,
style: 'rightme'
},
'or be declared in an "images" dictionary and referenced by name',
{
image: 'building',
width: 200
},
],
images: {
building: **'IMAGE DATA TRUNCATED FOR BREVITY'**
},
styles:{
rightme:
{
alignment: 'right'
}
}
}
$('#cmd').click(function () {
var img = document.getElementById('imgReq');
var empImage = img.getAttribute('src');
var docDefinition = {
pageMargins: [0, 0, 0, 0],
content: [
{
style: 'tableExample',
table: {
headerRows: 1,
body: [
[ {
image: 'building',
width: 195,
height: 185,
} ],
]
},
layout: {
hLineWidth: function(i, node) {
return (i === 0 || i === node.table.body.length) ? 0 : 0;
},
vLineWidth: function(i, node) {
return (i === 0 || i === node.table.widths.length) ? 0 : 0;
},
hLineColor: function(i, node) {
return (i === 0 || i === node.table.body.length) ? '#276fb8' : '#276fb8';
},
vLineColor: function(i, node) {
return (i === 0 || i === node.table.widths.length) ? '#276fb8' : '#276fb8';
},
paddingLeft: function(i, node) { return 0; },
paddingRight: function(i, node) { return 0; },
paddingTop: function(i, node) { return 0; },
paddingBottom: function(i, node) { return 0; }
}
}
],styles:{
tableExample: {
margin: [200, 74, 0, 0],
//alignment: 'center'
}
}, images: {
building: empImage
}
};
下面的代码演示了图像的左对齐(默认)、居中和右对齐。
将以下代码粘贴到 http://pdfmake.org/playground.html 中进行实时查看。
Playground 要求您将文档定义分配给名为 dd 的变量
var dd = {
content: [
'left align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'left' // Default... not actually required.
},
' ', ' ', 'center align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'center'
},
' ', ' ', 'right align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'right'
}
]
}
我在浏览器中(不是在 Nodejs 中)使用 images "dictionary" 从服务器定位图像,如下所示:
{
content: [
{
image: 'imageKey',
width: 20,
height: 20
}
],
images: {
imageKey: window.location.origin + "path/to/image" // via URL address, which can be referenced by this key
}
}
这使您可以轻松地(重新)使用服务器中的本地图像。我希望这对处于类似情况的人有所帮助。
只需将 alignment: "center"
添加到图像中,对我来说很有效)
我正在使用 pdfmake 创建 PDF,并已成功使用数据 URI 嵌入图像。这是一张小图片,大约 200 像素,我想让它右对齐。有什么方法可以将图像推到 PDF 的右侧吗?
您可以在文档定义中使用 pre-defined 样式右对齐图像。 pdfmake playground 有一个很好的图像示例,我编辑它以在下面添加 'right aligned' 样式(称为 'rightme')。我尝试直接将 'alignment: right' 添加到文档定义中,但这不起作用。
由于长度原因我删除了图像数据 - 访问pdfmake playground图像以查看其工作情况:
var dd = {
content: [
'pdfmake (since it\'s based on pdfkit) supports JPEG and PNG format',
'If no width/height/fit is provided, image original size will be used',
{
image: 'sampleImage.jpg',
},
'If you specify width, image will scale proportionally',
{
image: 'sampleImage.jpg',
width: 150
},
'If you specify both width and height - image will be stretched',
{
image: 'sampleImage.jpg',
width: 150,
height: 150,
},
'You can also fit the image inside a rectangle',
{
image: 'sampleImage.jpg',
fit: [100, 100],
pageBreak: 'after'
},
// Warning! Make sure to copy this definition and paste it to an
// external text editor, as the online AceEditor has some troubles
// with long dataUrl lines and the following image values look like
// they're empty.
'Images can be also provided in dataURL format...',
{
image: **'IMAGE TRUNCATED FOR BREVITY'**,
width: 200,
style: 'rightme'
},
'or be declared in an "images" dictionary and referenced by name',
{
image: 'building',
width: 200
},
],
images: {
building: **'IMAGE DATA TRUNCATED FOR BREVITY'**
},
styles:{
rightme:
{
alignment: 'right'
}
}
}
$('#cmd').click(function () {
var img = document.getElementById('imgReq');
var empImage = img.getAttribute('src');
var docDefinition = {
pageMargins: [0, 0, 0, 0],
content: [
{
style: 'tableExample',
table: {
headerRows: 1,
body: [
[ {
image: 'building',
width: 195,
height: 185,
} ],
]
},
layout: {
hLineWidth: function(i, node) {
return (i === 0 || i === node.table.body.length) ? 0 : 0;
},
vLineWidth: function(i, node) {
return (i === 0 || i === node.table.widths.length) ? 0 : 0;
},
hLineColor: function(i, node) {
return (i === 0 || i === node.table.body.length) ? '#276fb8' : '#276fb8';
},
vLineColor: function(i, node) {
return (i === 0 || i === node.table.widths.length) ? '#276fb8' : '#276fb8';
},
paddingLeft: function(i, node) { return 0; },
paddingRight: function(i, node) { return 0; },
paddingTop: function(i, node) { return 0; },
paddingBottom: function(i, node) { return 0; }
}
}
],styles:{
tableExample: {
margin: [200, 74, 0, 0],
//alignment: 'center'
}
}, images: {
building: empImage
}
};
下面的代码演示了图像的左对齐(默认)、居中和右对齐。
将以下代码粘贴到 http://pdfmake.org/playground.html 中进行实时查看。
Playground 要求您将文档定义分配给名为 dd 的变量
var dd = {
content: [
'left align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'left' // Default... not actually required.
},
' ', ' ', 'center align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'center'
},
' ', ' ', 'right align image', ' ',
{
image: 'sampleImage.jpg',
width: 100,
height: 100,
alignment: 'right'
}
]
}
我在浏览器中(不是在 Nodejs 中)使用 images "dictionary" 从服务器定位图像,如下所示:
{
content: [
{
image: 'imageKey',
width: 20,
height: 20
}
],
images: {
imageKey: window.location.origin + "path/to/image" // via URL address, which can be referenced by this key
}
}
这使您可以轻松地(重新)使用服务器中的本地图像。我希望这对处于类似情况的人有所帮助。
只需将 alignment: "center"
添加到图像中,对我来说很有效)