pdfmake 从 Long HTML Table 生成 PDF
pdfmake generate PDF from Long HTML Table
我正在使用 pdfmake http://pdfmake.org/ 从 HTML Table 及其一个很棒的小插件生成 PDF,但我唯一的问题是我有一个非常非常长的 table 并且宽度被切断(见下面的截图)
如何处理长 table?这只是我的 table 中的一个,我的 table 中有些较长,有些较短。这是我的代码:
var widths = [200];
var bodies = [];
$('#cost-matrix-table tr:nth-child(3) td').not(':first').each(function () {
widths.push(100);
});
var rowCounter = 0;
$('#cost-matrix-table tr').not(':nth-child(4)').each(function () {
var data = [];
var columnCounter = 0;
$(this).find("td").each(function () {
if ((rowCounter == 0 || rowCounter == 1) && columnCounter != 0) {
data.push({ text: $(this).text(), colSpan: 2, alignment: 'center' }, {});
}
else {
if (rowCounter == 2) {
if (columnCounter == 0) {
data.push({ text: $(this).text(), style: 'filledHeader' });
}
else {
data.push({ text: $(this).text(), style: 'filledHeader', alignment: 'center' });
}
}
else {
data.push($(this).text());
}
}
columnCounter++;
});
bodies.push(data);
rowCounter++;
});
var docDefinition = {
pageOrientation: 'landscape',
pageMargins: [40, 100, 40, 50],
pageSize: 'A0',
header: { text: $("#dropdown").val(), alignment: 'center', decoration: 'underline', fontSize: 28, bold: true, margin: [40, 40, 0, 0] },
content: [
{
table: {
widths: widths,
body: bodies,
headerRows: 3,
pageBreak: 'before',
dontBreakRows: true,
fontSize: 28
}
}
],
styles: {
filledHeader: {
color: 'white',
fillColor: 'black',
}
}
};
pdfMake.createPdf(docDefinition).download('CostMatrix-' + $("#dropdown").val().replace(/\s/g, '') + '.pdf');
我将 pageSize 设置为 A0,但它仍然被截断了...高度完美,只是宽度被截断了,请帮忙!我可以设置页面大小的宽度和高度,但我不知道该设置什么。我的 table 有 45 列,每列宽度为 100,除了第一列是 200,总共 4600
如果边距不是一个选项或解决方案,小字体样式怎么样?
styles: {
// FONT SIZE
// SIZE 8
font_xs: { fontSize: 8 },
// SIZE 10
font_sm: { fontSize: 10 },
// SIZE 12
font_md: { fontSize: 12 },
// SIZE 14
font_lg: { fontSize: 14 },
// SIZE 16
font_xl: { fontSize: 16 }
}
这样使用
{
text: 'td 0',
style: ['font_sm']
}
我正在使用 pdfmake http://pdfmake.org/ 从 HTML Table 及其一个很棒的小插件生成 PDF,但我唯一的问题是我有一个非常非常长的 table 并且宽度被切断(见下面的截图)
如何处理长 table?这只是我的 table 中的一个,我的 table 中有些较长,有些较短。这是我的代码:
var widths = [200];
var bodies = [];
$('#cost-matrix-table tr:nth-child(3) td').not(':first').each(function () {
widths.push(100);
});
var rowCounter = 0;
$('#cost-matrix-table tr').not(':nth-child(4)').each(function () {
var data = [];
var columnCounter = 0;
$(this).find("td").each(function () {
if ((rowCounter == 0 || rowCounter == 1) && columnCounter != 0) {
data.push({ text: $(this).text(), colSpan: 2, alignment: 'center' }, {});
}
else {
if (rowCounter == 2) {
if (columnCounter == 0) {
data.push({ text: $(this).text(), style: 'filledHeader' });
}
else {
data.push({ text: $(this).text(), style: 'filledHeader', alignment: 'center' });
}
}
else {
data.push($(this).text());
}
}
columnCounter++;
});
bodies.push(data);
rowCounter++;
});
var docDefinition = {
pageOrientation: 'landscape',
pageMargins: [40, 100, 40, 50],
pageSize: 'A0',
header: { text: $("#dropdown").val(), alignment: 'center', decoration: 'underline', fontSize: 28, bold: true, margin: [40, 40, 0, 0] },
content: [
{
table: {
widths: widths,
body: bodies,
headerRows: 3,
pageBreak: 'before',
dontBreakRows: true,
fontSize: 28
}
}
],
styles: {
filledHeader: {
color: 'white',
fillColor: 'black',
}
}
};
pdfMake.createPdf(docDefinition).download('CostMatrix-' + $("#dropdown").val().replace(/\s/g, '') + '.pdf');
我将 pageSize 设置为 A0,但它仍然被截断了...高度完美,只是宽度被截断了,请帮忙!我可以设置页面大小的宽度和高度,但我不知道该设置什么。我的 table 有 45 列,每列宽度为 100,除了第一列是 200,总共 4600
如果边距不是一个选项或解决方案,小字体样式怎么样?
styles: {
// FONT SIZE
// SIZE 8
font_xs: { fontSize: 8 },
// SIZE 10
font_sm: { fontSize: 10 },
// SIZE 12
font_md: { fontSize: 12 },
// SIZE 14
font_lg: { fontSize: 14 },
// SIZE 16
font_xl: { fontSize: 16 }
}
这样使用
{
text: 'td 0',
style: ['font_sm']
}