我有一个Angular 7应用程序,我想从其中使用jsPDF生成一些PDF。我可以毫无问题地生成基于文本的PDF,但是当我尝试添加Acroform字段时,会生成PDF,但是缺少这些字段。重现此问题的步骤如下:
使用Angular-CLI创建新的Angular应用:
ng新的jspdfTester
cd jspdfTester
安装jspdf
npm install -s jspdf
将jspdf代码添加到app.component.ts文件
import { Component } from '@angular/core';
import * as jsPDF from 'jspdf';
declare global {
const TextField: any;
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'jspdfTester';
constructor() {
const doc = new jsPDF();
const textField = new TextField();
textField.Rect = [50, 50, 30, 10];
doc.addField(textField);
doc.text('test', 50, 40);
doc.save('sample.pdf');
}
}
运行该应用程序,将下载一个包含测试文本但没有文本字段的PDF。
关于如何解决此问题的任何想法?
编辑: 经过仔细调试后,似乎正在调用zone.js中的Object.getOwnPropertyDescriptor方法,而不是浏览器的Object.getOwnPropertyDescriptor方法。显然,它们的工作方式不同,这打破了jsPDF。仍然没有解决办法,但我越来越近了。
答案 0 :(得分:0)
我发现zone.js覆盖了Object.defineProperty设置,并更改了jsPDF在定义AcroFrom原型时尝试设置的某些属性的配置值。我不确定在不更改两个库之一的情况下是否可以解决此问题。我有proposed a change to jsPDF,所以也许他们会在下一个版本中对其进行修复。