我有一个很长的列,比如被写到页面左半部分的内容(第1页),但是已经满了,所以我需要创建第2页并在返回到第1页之前完成将内容写到第2页,然后写到右边。
我创建了代码,允许我将页面(第1页和第2页)存储在数组中,并将上下文存储在数组中,这样我就可以轻松地在所写的上下文之间切换。
但是,我创建的新页面是空的,即使我正在编写它们的上下文。
下面是当我准备创建第2页并在其上编写测试语句时被调用的函数。
function createNewPage(){
//Note all these variables are global, and hence I don't need to reinitialize them
if(lastPageNumber === 0 && currentPageNumber == 0){
currentPageNumber++;
}
else{
lastPageNumber++;
currentPageNumber++;
}
//create a new page and store it in my array
pagesArray[currentPageNumber] = pdfWriter.createPage(0, 0, eiReportPageWidth, eiReportPageHeight);
// create a new context and store it in my other array
cxtArray[currentPageNumber] = pdfWriter.startPageContentContext(pagesArray[currentPageNumber]);
//select the context I want to write to
cxt = cxtArray[currentPageNumber];
//I try writing to this new context but nothing happens and I get back a blank page
cxt.writeText("Hello", 50, 400, fontOptions);
}
//Now that all elements are in place, write to the page
pagesArray.forEach(page =>{
pdfWriter.writePage(page);
})发布于 2018-08-03 20:50:12
解释:
First:
您必须正确地指定fontOption。我也希望如此。
var arialFont = pdfWriter.getFontForFile('./arial.ttf');
var fontOptions = {font:arialFont,size:14,colorspace:'gray',color:0x00};第二版:
如果,首先是完美的,那么这就是问题所在。
if(lastPageNumber === 0 && currentPageNumber == 0){
currentPageNumber++;
}
else{
lastPageNumber++;
currentPageNumber++;
}您正在维护数组pagesArray[currentPageNumber],数组以0开头。但是,当currentPageNumber == 0时,您总是增加1。
所以你的pagesArray看起来:
[
<1 empty item>,
PDFPage {
rotate: undefined,
artBox: undefined,
trimBox: undefined,
bleedBox: undefined,
cropBox: undefined,
mediaBox: [ 0, 0, 595, 842 ]
}
]因此,pdfWriter.writePage(page)将无法在<1 empty item>上编写。
解决方案:
0开始。只需使用一些循环将currentPageNumber从0迭代到lastPageNumber。https://stackoverflow.com/questions/51678684
复制相似问题