首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Hummus.js编写多个空白页

用Hummus.js编写多个空白页
EN

Stack Overflow用户
提问于 2018-08-03 19:03:24
回答 1查看 557关注 0票数 0

我有一个很长的列,比如被写到页面左半部分的内容(第1页),但是已经满了,所以我需要创建第2页并在返回到第1页之前完成将内容写到第2页,然后写到右边。

我创建了代码,允许我将页面(第1页和第2页)存储在数组中,并将上下文存储在数组中,这样我就可以轻松地在所写的上下文之间切换。

但是,我创建的新页面是空的,即使我正在编写它们的上下文

下面是当我准备创建第2页并在其上编写测试语句时被调用的函数。

代码语言:javascript
复制
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);
})
EN

回答 1

Stack Overflow用户

发布于 2018-08-03 20:50:12

解释:

First:

您必须正确地指定fontOption。我也希望如此。

代码语言:javascript
复制
var arialFont = pdfWriter.getFontForFile('./arial.ttf');
var fontOptions = {font:arialFont,size:14,colorspace:'gray',color:0x00};

第二版:

如果,首先是完美的,那么这就是问题所在。

代码语言:javascript
复制
if(lastPageNumber === 0 && currentPageNumber == 0){
  currentPageNumber++;
}
else{
  lastPageNumber++;
  currentPageNumber++;
}

您正在维护数组pagesArray[currentPageNumber],数组以0开头。但是,当currentPageNumber == 0时,您总是增加1。

所以你的pagesArray看起来:

代码语言:javascript
复制
[
  <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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51678684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档