我正在使用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) 我正在使用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吗?
我正在尝试将图像插入到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放入浏览器时图像出现.我错过了什么吗?
我正在使用PDFKit.org通过JavaScript生成PDF.
文档是不言自明的,但我面临一个未解决的问题,我猜一些StackOverflow成员可能已经找到了一个技巧.
我必须在某个时刻旋转文本,文档只解释如何旋转形状(如a rect()
).
我已经尝试了几件事,但到目前为止它们都没有.
所以我正在寻找通过调整代码来旋转它的方法,或者也许你们中的一些人可以向我展示我可能错过的文档的一部分?
我正试图找到一种方法来使用粗体字体权重来强调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)
这是有效的,但远非灵活和可维护.
所以,我有一份文件:
var doc = new PDFDocument;
文档告诉我PDFKit文档的第一页是自动添加的,所以不需要手动添加它.但是我怎么能把它当成风景呢?
这个
doc.addPage({
size: 'LEGAL',
layout: 'landscape'
});
Run Code Online (Sandbox Code Playgroud)
工作,但添加另一页.
我正在尝试创建一个使用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) 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,但我似乎无法找到合并文件的任何选项.
提前致谢
我正在使用pdfkit生成带有一些自定义内容的pdf,然后将其发送到AWS S3存储桶.
虽然如果我作为一个整体生成文件并上传它完美地工作,但是,如果我想将生成的文件作为八位字节流流式传输,我无法找到任何相关的指针.
我正在寻找nodejs解决方案(或建议).
我正在使用 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,因此它的最后一部分是我想要的名称,但这对于客户端生成的对象似乎是不可能的。
我尝试过的事情:
有没有办法解决这个问题,以便我可以控制默认/建议的文件名?
node-pdfkit ×10
javascript ×8
node.js ×8
pdf ×4
express ×3
amazon-s3 ×1
aws-sdk ×1
collectionfs ×1
html ×1
merge ×1
meteor ×1
pdfjs ×1