如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF?

2024-02-23

看起来像这样question https://github.com/bpampuch/pdfmake/issues/642已经asked https://stackoverflow.com/questions/41314411/create-a-link-in-a-pdf-with-pdfmake-in-server-side-with-node很少几个times https://stackoverflow.com/questions/35677412/server-side-fonts-directory-in-pdfmake-in-meteor-app使用旧版本的 PDFMake,但尚未更新为最新的目录结构。另外,将字体复制到根“fonts”文件夹中也不是很好。

我到底如何获得在 Node.js 上运行的 PDFMake 的服务器端版本 ("pdfmake": "^0.1.31")使用包含的 vfs_fonts.js 文件?

在命令行上使用 npm 安装

npm install pdfmake fs --save

使用以下命令启动 Node.js 应用程序 index.js:

var fonts = {
    Roboto: {
        normal: 'fonts/Roboto-Regular.ttf',
        bold: 'fonts/Roboto-Medium.ttf',
        italics: 'fonts/Roboto-Italic.ttf',
        bolditalics: 'fonts/Roboto-MediumItalic.ttf'
    }
};

var PdfPrinter = require('pdfmake/src/printer');
var printer = new PdfPrinter(fonts);

var dd = {
    content: [
        'First paragraph',
        'Another paragraph'
    ]
}
var pdfDoc = printer.createPdfKitDocument(dd);
pdfDoc.pipe(fs.createWriteStream('basics.pdf')).on('finish',function(){
    //success
});
pdfDoc.end();

打跑并击中:

/usr/local/bin/node index.js
fs.js:640
  return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
                 ^
Error: ENOENT: no such file or directory, open 'fonts/Roboto-Regular.ttf'
    at Error (native)
    at Object.fs.openSync (fs.js:640:18)

问题似乎在于 font/Roboto... 文件的位置。在客户端,这是通过包含 vfs_fonts.js 文件来解决的。服务器端,我不确定。没有字体文件夹或 .ttf 文件 https://github.com/bpampuch/pdfmake/issues/381包括。流星框架example https://github.com/daupawar/MeteorAsyncPdfmake我发现似乎不适用。

有任何想法吗?全部是官方的examples https://github.com/bpampuch/pdfmake/tree/master/examples引用 src/fonts 文件夹。对于 npm install 服务器模块来说这不是一个好方法。


这就是我为解决这个问题所做的。

下载“roboto-font”:“0.1.0”模块并在 Roboto 对象中分配该字体的路径,效果很好。

let fonts = {
    Roboto: {
        normal: 'node_modules/roboto-font/fonts/Roboto/roboto-regular-webfont.ttf',
        bold: 'node_modules/roboto-font/fonts/Roboto/roboto-bold-webfont.ttf',
        italics: 'node_modules/roboto-font/fonts/Roboto/roboto-italic-webfont.ttf',
        bolditalics: 'node_modules/roboto-font/fonts/Roboto/roboto-bolditalic-webfont.ttf'
    }
};
let printer = new pdfMake(fonts);
let pdfDoc = printer.createPdfKitDocument(pdfData);
pdfDoc.pipe(fs.createWriteStream(reportName));
pdfDoc.end();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF? 的相关文章

随机推荐

  • 在 PHP 中打开命名管道时如何防止 fopen() 挂起

    我有一个命名管道文件 如下所示 prw r r 1 root root 0 Aug 11 17 01 tmp debug 当我在 PHP 中做这样的事情时 fp fopen tmp debug r 它挂起 即永远不会返回 有没有办法让这个调
  • 更改屏幕方向后 TextView 内容丢失

    观察 Android 模拟器中的应用程序行为 我发现更改屏幕方向 Ctrl F11 后 EditText 内容被保留 但 TextView 内容被重置为其初始值 并且不保留程序设置的最新信息 这是定义上的行为吗 我可以做什么来保留这些内容
  • jQuery 跨站点获取

    我觉得这很容易 但我错过了一些东西 使用 jQuery 我尝试获取远程页面 在不同的服务器上 捕获 HTML 内容 并将该内容注入到隐藏的 DIV 中 但是 使用 ajax 或 get 会导致 FireFox 中出现跨站点脚本错误 有什么建
  • 在 Rails 中,我应该如何为任务应用程序实现状态字段 - 整数还是枚举?

    对于 Rails 3 0 Todo 应用程序 我有一个带有Status场地 存储状态字段数据 字段类型 并仍然在视图 HTML 表 中显示人类可读版本的最佳方法是什么 状态可以是 0 正常1 活动2 已完成 现在我有这个 Rails 架构在
  • Swing 自定义 GUI 组件

    我需要创建一个与下图所示相同的自定义 GUI 组件 它上面有一些按钮和标签 我怎样才能像这样创建 您可以使用 JWindow 并使用 Image 作为背景图片 对于按钮 使用带有 ImageIcon 的 JButton
  • React-spring useTransition 在轮播样式组件上导致过渡期间重叠

    我正在尝试制作一个模态框 它将在轮播样式组件中显示几张幻灯片 并在幻灯片更改时制作一些简单的进入 退出动画 我正在使用useTransition 钩子 https react spring io hooks use transition来自
  • jqplot 改变鼠标悬停时图形的颜色

    jqPlot当鼠标悬停时更改填充的颜色 我想删除该效果 如何 以下是使用的选项 var options series neighborThreshold 1 shadowAngle 0 shadowOffset 2 5 shadowAlph
  • (折叠)工具栏标题在 Snackbar 出现后重置其位置

    我有一个布局CollapsingToolbarLayout and CoordinatorLayout作为根元素 每当一个Snackbar显示在activity the title of the toolbar将其位置重置为默认的扩展标题位
  • 期望:将生成命令的输出存储到变量中

    在我的 预期 脚本中 set REPOS path to repo set REV 73 set LOG spawn svnlook log r REV REPOS 这将在变量 LOG 中存储什么 16345 内存位置 它应该在变量 LOG
  • Socket.io 是否保证客户端按顺序接收广播事件?

    Socket IO 中是否有某种排序机制可以保证客户端按顺序接收事件 例如 如果服务器发出事件Evt1发送给客户端A 服务器广播Evt2致所有客户 因此客户端A收到Evt1 then Evt2并且只能按照这个顺序 我的猜测是否定的 如果是这
  • 如何加快 PostgreSQL 中的插入性能

    我正在测试 Postgres 插入性能 我有一个表 其中一列的数据类型为数字 上面也有一个索引 我使用以下查询填充了数据库 insert into aNumber id values 564 43536 34560 我使用上面的查询很快插入
  • UIWebView:为什么使用不存在的主机名时请求不会超时?

    我的情况是这样的 我有一个UIWebView它向用户提供主机名的 URL 发出 POST 请求 当主机名不存在时 我需要超时 以便我可以提醒用户他们应该检查他们的设置 怎么了 我提出这样的请求 NSString theURL NSStrin
  • Sublime 3 中的包控制不起作用?

    注意 我首先在论坛上搜索了 sublime 以便发布问题 因为我不确定这个问题是否适合这个特定的论坛 并想将其与其他帖子进行比较 如果它不应该在这里 请告诉我 我很乐意在此处关闭它并在任何其他 stackoverflow 论坛中打开它 谢谢
  • IIS 10.0 详细错误 - [httpDelete] [httpPut] 的 404.0

    我正在尝试在 ASP NET MVC 中创建一个 api 不幸的是 我有两个 HTTP 请求的问题 DELETE 和 PUT ActionName Index HttpGet public String Index return get A
  • 预接收挂钩被拒绝:提交消息中未发现 JIRA 问题?

    我已经提交并尝试将更改推送到存储库 但它给了我这个错误 remote refs heads feature OMT 1270 Missing French Translations cd54ab15bc8d5764ab12cf6fc202f
  • 如何从 Java 文本文件中读取逗号分隔值?

    我得到了这个文本文件 其中包含地图上不同点的纬度和经度值 如何将字符串拆分为纬度和经度 使用空格或制表符等其他分隔符执行此类操作的一般方法是什么 样本文件 28 515046280572285 77 38258838653564 28 51
  • 将不相关的集合映射到一个集合

    我有一个类 其中包含两个不同的不相关类型的集合 public class Entity ICollection
  • 在 Exchange Web 服务 (EWS) 中处理事件时识别项目类型

    我正在使用带有 EWS API 的流式通知 在事件处理程序中 我发现某个项目已被修改 但我尝试将修改后的项目绑定到电子邮件消息失败 错误信息具体是 服务 约会 返回的项目类型不兼容 与请求的项目类型 EmailMessage 似乎在尝试绑定
  • CSS 翻转卡 Internet Explorer 问题

    我正在尝试让 CSS 翻转卡在 Internet Explorer 11 中工作 我已阅读其他问题 解决方案是在翻转卡功能中添加 ms 前缀 我已经这样做了 但在 IE 11 中 翻转的卡片由于某种原因不显示背面 http jsbin co
  • 如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF?

    看起来像这样question https github com bpampuch pdfmake issues 642已经asked https stackoverflow com questions 41314411 create a l