标签: node-pdfkit

使用pdfkit生成pdf文件并将其发送到nodejs-expressjs中的浏览器

我正在使用pdfkit生成pdf文件,我想将此pdf文件发送到浏览器.

但我收到消息 "TypeError: listener must be a function", 此外,文件正在我的父目录生成,我不想要.

谁能解释我如何生成pdf文件并将其发送到浏览器而不将其存储在父目录中?
我在这里使用expressjs.

我的代码

var PDFDocument = require('pdfkit');                      
var fs=require('fs');
doc = new PDFDocument();
doc.moveTo(300, 75)
   .lineTo(373, 301)
   .lineTo(181, 161)
   .lineTo(419, 161)
   .lineTo(227, 301)
   .fill('red', 'even-odd');  

var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  

doc.y = 320;
doc.fillColor('black')
doc.text(loremIpsum, {
   paragraphGap: 10,
   indent: 20,
   align: 'justify',
   columns: 2
});  

doc.write('out.pdf');
res.download('out.pdf');
Run Code Online (Sandbox Code Playgroud)

javascript node.js express node-pdfkit

18
推荐指数
2
解决办法
2万
查看次数

pdfkit中的HTML表(Expressjs-Nodejs)

我正在使用pdfkit生成pdf文件,我想将此pdf文件发送到浏览器.
我的下面的代码工作正常,我得到一个带文本的pdf.
实际上下面的代码是在nodejs中使用pdfkit生成pdf的示例,但现在我想创建html表.

最新代码

var PDFDocument = require('pdfkit');
var fs=require('fs');
doc = new PDFDocument();
doc.pipe( fs.createWriteStream('out.pdf') );
doc.moveTo(300, 75)
   .lineTo(373, 301)
   .lineTo(181, 161)
   .lineTo(419, 161)
   .lineTo(227, 301)
   .fill('red', 'even-odd');  

var loremIpsum = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam in...';  

doc.y = 320;
doc.fillColor('black')
doc.text(loremIpsum, {
   paragraphGap: 10,
   indent: 20,
   align: 'justify',
   columns: 2
});
doc.pipe( res );
doc.end();
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用pdfkit生成pdf格式的HTML表格?
任何人都可以帮我创建HTML表格pdf吗?

javascript node.js express node-pdfkit

12
推荐指数
2
解决办法
2万
查看次数

如何从CollectionFS获取文件(图像)的缓冲区

我正在尝试将图像插入到pdf中,我正在使用PDFkit创建服务器端.我正在使用cfs:dropbox来存储我的文件.在我使用cvs:filesystem之前,很容易将图像添加到我的pdf中,因为它们就在那里.现在它们被远程存储,我不知道如何添加它们,因为PDFkit不支持仅使用url添加图像.但是,它会接受一个缓冲区.如何从我的CollectionFS文件中获取缓冲区?

到目前为止,我有这样的事情:

var portrait = Portraits.findOne('vS2yFy4gxXdjTtz5d');
readStream = portrait.createReadStream('portraits');
Run Code Online (Sandbox Code Playgroud)

到目前为止,我试过两种方式获取缓冲区:

首先使用dataMan,但最后一个命令永远不会回来:

var dataMan = new DataMan.ReadStream(readStream, portrait.type());
var buffer = Meteor.wrapAsync(Function.prototype.bind(dataMan.getBuffer, dataMan))();
Run Code Online (Sandbox Code Playgroud)

第二次手动缓冲流:

var buffer = new Buffer(0);
readStream.on('readable', function() {
    buffer = Buffer.concat([buffer, readStream.read()]);
});
readStream.on('end', function() {
    console.log(buffer.toString('base64'));
});
Run Code Online (Sandbox Code Playgroud)

这似乎永远不会回来.我仔细检查了我的文档以确保它在那里并且它有一个有效的URL并且当我将URL放入浏览器时图像出现.我错过了什么吗?

javascript node.js meteor node-pdfkit collectionfs

12
推荐指数
1
解决办法
1358
查看次数

在PDFKit中旋转文本有什么技巧吗?

我正在使用PDFKit.org通过JavaScript生成PDF.

文档是不言自明的,但我面临一个未解决的问题,我猜一些StackOverflow成员可能已经找到了一个技巧.

我必须在某个时刻旋转文本,文档只解释如何旋转形状(如a rect()).

我已经尝试了几件事,但到目前为止它们都没有.

所以我正在寻找通过调整代码来旋转它的方法,或者也许你们中的一些人可以向我展示我可能错过的文档的一部分?

javascript pdf node-pdfkit pdfjs

11
推荐指数
2
解决办法
2468
查看次数

使用pdfkit时,我可以在同一段落中混合字体权重吗?

我正试图找到一种方法来使用粗体字体权重来强调pdfkit中的内联强调

不幸的是,我找不到一种方法来改变字体而不强制换行(对于内联强调不好......).

我在尝试这样的事情:

pdf.text('Hello ', LEFT, 200).font(bold).text('World!');
Run Code Online (Sandbox Code Playgroud)

但这会输出

你好

世界

我也挖掘了源代码,但找不到任何防止这种情况的选择.

任何人有任何想法或解决方法来解决这个问题?

编辑:

我现在能想到的只是一个丑陋的黑客,看起来像这样:

pdf.text('Hello ', LEFT, 200).moveUp(1).font(bold).text('World!', {indent: pdf.widthOfString('Hello ')});
Run Code Online (Sandbox Code Playgroud)

这是有效的,但远非灵活和可维护.

javascript pdf pdf-generation node.js node-pdfkit

8
推荐指数
2
解决办法
4100
查看次数

NodeJS和PDFKit:如何使第一页成为风景?

所以,我有一份文件:

var doc = new PDFDocument;

文档告诉我PDFKit文档的第一页是自动添加的,所以不需要手动添加它.但是我怎么能把它当成风景呢?

这个

doc.addPage({
    size: 'LEGAL',
    layout: 'landscape'
});
Run Code Online (Sandbox Code Playgroud)

工作,但添加另一页.

node.js node-pdfkit

8
推荐指数
1
解决办法
3003
查看次数

使用Node.js中的远程图像提供动态生成的PDF

我正在尝试创建一个使用PDFKit即时生成PDF的节点服务器.PDF是基于POST请求(通过Express)的参数生成的.其中一个参数指定图像URL,服务器下载并注入PDF.

现在,我有以下结构:

// Get dependencies
var express = require('express'),
http = require('http'),
fs = require('fs'),
pdfDocument = require('pdfkit');

// Get express started.
var app = express();

// Use JSON in POST body
app.use(express.json());

// Setup POST response
app.post('/post_pdf', function(req, res) {
    // Get the PDF initialized
    var doc = new pdfDocument();

    // Set some headers
    res.statusCode = 200;
    res.setHeader('Content-type', 'application/pdf');
    res.setHeader('Access-Control-Allow-Origin', '*');

    // Header to force download
    res.setHeader('Content-disposition', 'attachment; filename=Untitled.pdf');     

    // Pipe generated PDF into response …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express node-pdfkit

7
推荐指数
1
解决办法
1万
查看次数

NodeJS,合并两个pdf

Hy,我有两个.pdf,我想用节点合并它们,我已经尝试过使用Ghostscript,并且从节点执行,但是GhostScript有点儿错误,有时它会给出分段错误级别11,我已经研究过它了常见的bug.

Processing pages 1 through 2.
Page 1
Page 2
Segmentation fault: 11
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,是否有一个模块可以为我合并两个PDF,已经尝试过PDFMake和PDFKit,但我似乎无法找到合并文件的任何选项.

提前致谢

pdf merge node.js node-pdfkit

7
推荐指数
1
解决办法
3579
查看次数

使用nodejs aws sdk将生成的pdf上传到AWS S3

我正在使用pdfkit生成带有一些自定义内容的pdf,然后将其发送到AWS S3存储桶.

虽然如果我作为一个整体生成文件并上传它完美地工作,但是,如果我想将生成的文件作为八位字节流流式传输,我无法找到任何相关的指针.

我正在寻找nodejs解决方案(或建议).

javascript amazon-s3 node.js node-pdfkit aws-sdk

6
推荐指数
3
解决办法
8224
查看次数

为使用 Blob 的 <embed> 或 <iframe> 设置默认另存为名称

我正在使用 PDFKit(无节点)在浏览器中生成 PDF,并通过 src 属性将其显示为 iframe 或嵌入标签。生成的 blob URL 是某种 UUID。所以整个页面看起来像:

<embed src="blob:http://localhost/eeaabb..."/>
Run Code Online (Sandbox Code Playgroud)

PDF 看起来不错,但是当我在 Chrome 中单击下载链接时,默认文件名是 UUID。在 FireFox 中,它只是“document.pdf”。

如果这是服务器生成的 PDF,我将使用 Content-Disposition 和/或操作 URL,因此它的最后一部分是我想要的名称,但这对于客户端生成的对象似乎是不可能的。

我尝试过的事情:

  • 通过元数据设置 PDF 标题。这有效但不影响文件名。
  • 操作嵌入标签标题属性。好像什么都没做
  • 更改页面标题。不影响文件。
  • 尝试在数据 url 中附加一些内容。只是阻止显示 PDF。
  • 通过 POST 上传 PDF,然后通过我可以控制 URL 的页面下载它。可以工作,但生成客户端 PDF 只需要将其上传到服务器似乎很疯狂。

有没有办法解决这个问题,以便我可以控制默认/建议的文件名?

html javascript pdf node-pdfkit

6
推荐指数
1
解决办法
1万
查看次数