【问题标题】:PDFKit - Text over rectanglePDFKit - 矩形上的文本
【发布时间】:2017-02-02 07:31:59
【问题描述】:

是否可以使用 PDFKit 在矩形上渲染文本。也许可以使用hack,用不透明度填充矩形 - 但我不想那样使用它。我的文本被矩形隐藏(我通过交替使用不同颜色的矩形来创建表格)。

更新

我发现文本在某种程度上与矩形颜色相同,这可能就是我看不到它的原因。但为什么呢?

 var doc = new PDFDocument({
    size: 'A4',
    margin: 25
  });
  doc.fontSize(11);
  doc.lineWidth(0.5);

  const projects = Projects.find().fetch();

  const rectXOffset = 25;
  const rectYOffset = 25;
  let rectPosition = 25;

  let counter = 0;

  for (var project of projects) {


    if (counter % 2 == 0)
    {

     doc.rect(rectXOffset, rectPosition, doc.page.width - rectXOffset * 2, 25).fill("#ddd");

    }
    else
    {

      doc.rect(rectXOffset, rectPosition, doc.page.width - rectXOffset * 2, 25).fill("#c9c9c9");
    }

    rectPosition += rectYOffset;
    counter++;

    doc.text(project.projectName,100,100).fillColor("red");

  }


  doc.write(process.env.PWD + '/PDFKitExampleServerSide.pdf');

【问题讨论】:

    标签: javascript pdf-generation node-pdfkit


    【解决方案1】:

    来这里寻找类似问题的答案... 我想我已经弄明白了。

    var doc = new PDFDocument({
        size: 'A4',
        margin: 25
    });
    doc.fontSize(11);
    doc.lineWidth(0.5);
    
    const projects = Projects.find().fetch();
    
    const rectXOffset = 25;
    const rectYOffset = 25;
    let rectPosition = 25;
    
    let counter = 0;
    
    for (var project of projects) {
    
    //here
    doc.save
    
    if (counter % 2 == 0)
    {
        doc.rect(rectXOffset, rectPosition, doc.page.width - rectXOffset * 2, 25).fill("#ddd");
    }
    else
    {
        doc.rect(rectXOffset, rectPosition, doc.page.width - rectXOffset * 2, 25).fill("#c9c9c9");
    }
    
    rectPosition += rectYOffset;
    counter++;
    
    //and here
    doc.restore
    
    doc.text(project.projectName,100,100).fillColor("red");
    
    }
    
    
    doc.write(process.env.PWD + '/PDFKitExampleServerSide.pdf');
    

    【讨论】:

    • 感谢您的宝贵时间。不幸的是,文本仍然与矩形相同或颜色相同,或者仍在矩形下方。
    • 如何将 .fillColor() 先放在 .text() 之后
    • 仍然无法正常工作,但我已经尝试了很棒的 pdfmake 浏览器版本,它正在工作:npmjs.com/package/pdfmake-browserified。这可能对你有好处。它有更简单的方法来生成表格。
    【解决方案2】:

    您需要使用填充和/或描边方法来实际绘制矩形,然后重新定义文本的颜色。 这对我来说可以在带有黑色边框的灰色框中绘制红色文本:

        doc.rect(45, 165, 240, 22).fillAndStroke('#ddd', '#000');
        doc.fill('#F00').stroke();
        doc.fontSize(16);
        doc.text("Sample text", 50, 170, {lineBreak: false} );
    

    这是因为 doc.text 没有传递颜色,所以它使用旧的。

    【讨论】:

      【解决方案3】:

      你只需要扫一扫

      doc.text(project.projectName,100,100).fillColor("red");

      应该是

      doc.fillColor("red").text(project.projectName,100,100);

      到 pdfkit 设置文本时,填充颜色已经设置为矩形的颜色。

      【讨论】:

        猜你喜欢
        • 2012-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2012-08-27
        相关资源
        最近更新 更多