pdfmake:如何创build不同方向的多个页面pdf?

有没有办法使用pdfmake创build不同页面方向的多个页面pdf

为了简单起见,我想要这样的东西:

  • 1页纵向
  • 2页横向
  • 3页纵向

我用不同的方法尝试过很多次,但总是对所有页面都有影响。


对不起我的英语

这是老问题,但回答可能会帮助别人。

如果你想改变页面的方向,你只需要在页面的第一个节点指定新的值。

在这行下面,我附上了一个简单的代码,您可以直接在pdfmake操场上粘贴,以便尝试。

祝你好运!

var dd = { content: [ { text: 'Unordered list', style: 'header' }, { ol: [ 'item 1', 'item 2', 'item 3', ] }, { text: '\n\nUnordered list with longer lines', style: 'header', pageBreak: 'before', pageOrientation: 'landscape' }, { ol: [ 'item 1', 'Lorem ipsum dolor sit amet, consectetur ..', 'item 3', ] }, { text: '\n\nNested lists', style: 'header', pageBreak: 'before', pageOrientation: 'portrait' }, { ol: [ 'item 1', 'Lorem ipsum dolor sit amet, consectetur ..', { ol: [ 'subitem 1', 'subitem 2', 'subitem 3 - Lorem ipsum dolor sit ame...', 'subitem 4', 'subitem 5', ] }, 'item 3\nsecond line of item3', ] }, ], styles: { header: { bold: true, fontSize: 15 } }, defaultStyle: { fontSize: 12, } } 

我只是通过pdfmake的文档 ,他们给出下面的代码来设置页面方向:

  var docDefinition = { // a string or { width: number, height: number } pageSize: 'A5', // by default we use portrait, you can change it to landscape if you wish pageOrientation: 'landscape', ... //Other content }; 

现在整个项目的本质就是我认为唯一的Document定义对象。 即使在github页面和提到的问题上,我也没有看到为特定页面设置页面方向的规定,尽pipe您可以像这样添加PageBreaks:

  (...) 'You can also fit the image inside a rectangle', { image: 'fonts/sampleImage.jpg', fit: [100, 100], pageBreak: 'after' }, (...) 

也就是说,我认为你的问题有一个解决方法。 你看,这是如何在这个项目中生成pdf文档:

  var fs = require('fs'); var pdfDoc = printer.createPdfKitDocument(docDefinition); pdfDoc.pipe(fs.createWriteStream('pdfs/basics.pdf')); pdfDoc.end(); 

当然, pipe和fs模块是节点的实现。 但是,由于我们将页面方向附加到文档定义对象,所以如果我们有多个文档定义,如下所示:

  var pdf1 = printer.createPdfKitDocument(docdef1); //landscape mode page 1 var pdf2 = printer.createPdfKitDocument(docdef2); //portrait mode page 2 var pdf3 = printer.createPdfKitDocument(docdef3); //landscape mode for the rest of the pages. 

我们现在可以在createWriteStream()方法中使用append标志。 有用的文件 。 (未经testing的代码)

  pdf1.pipe(fs.createWriteStream('foo.pdf')); pdf2.pipe(fs.createWriteStream('foo.pdf',{flags:'a'})); pdf3.pipe(fs.createWriteStream('foo.pdf',{flags:'a'})); pdf1.end(); pdf2.end(); pdf3.end(); 

我只是build议如何组合文档定义对象。 希望它能让你开始正确的方向。