【问题标题】:Writing to Multiple Blank Pages with Hummus.js使用 Hummus.js 写入多个空白页
【发布时间】:2018-08-04 05:55:24
【问题描述】:

我有一个很长的列,例如正在写入页面左半部分(第 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);
})

【问题讨论】:

    标签: node.js hummus.js


    【解决方案1】:

    解释:

    第一:

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

    var arialFont = pdfWriter.getFontForFile('./arial.ttf');
    var fontOptions = {font:arialFont,size:14,colorspace:'gray',color:0x00};
    

    第二:

    如果,first 是完美的,那么问题就在这里。

    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) 将无法在 &lt;1 empty item&gt; 上写字。

    解决方案:

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

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

    【讨论】:

    • 感谢您的建议,但您的 sn-p 并不能解决我的问题。正如您在此处看到的,我做了一个小调整,它不允许我写到第 1 页,然后是 2,然后是 1。 repl.it/repls/DarkgreyOilyBookmarks
    • 显然,您不能保持多个上下文打开。所以你不应该试图回到以前的页面去写。相反,您应该从头开始规划布局,然后逐页编写。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多