0

我有一个很长的列,比如正在写入页面左半部分(第 1 页)但溢出的内容,因此我需要创建第 2 页并完成将内容写入第 2 页,然后再返回第 1 页并写入右手边。

我创建的代码允许我将页面(第 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);
})
4

1 回答 1

0

解释:

第一的:

您必须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.

所以你的 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>

解决方案:

  • 要么你已经有了第一页。(但你没有)
  • 假设您正在创建新的 PDF。你需要从0. 只需使用一些循环currentPageNumber从 0 迭代到lastPageNumber.

在此处查看工作演示https://repl.it/@hrdk108/Hardik-Shah-hummus

于 2018-08-03T20:50:12.977 回答