【发布时间】:2020-11-22 22:59:14
【问题描述】:
我们正在开发一个项目(同时为 iOS 和 Android 提供服务),其中 AngularJS 和 Ionic 1.x 仍然需要重新编码为更新的代码由于此处不值得提及的原因,因此无法使用版本。
我们现在必须使用 jsPDF-autotable 和 jsPDF 将 ID 为 tableText 的表格的动态内容保存到 PDF 文件中,该文件可以跨越超过一页。
在相关的 .html 文件中存在如下行:
<ion-nav-buttons side="secondary">
<a ng-click="getPDF()" class="button button-icon icon ion-ios-cloud-upload"></a>
</ion-nav-buttons>
这样会触发以下 JavaScript 代码,以便使用 smtpjs 将生成的 PDF 文件作为附件附加:
$scope.getPDF = function ()
{
var fileName = „test.pdf“;
var emailSubject = „Title text“;
var emailBody = „Some text“;
var emailReceiver = „receiver@hotmail.com";
var emailSender = „info@my.website.com“;
var hostName = „smtp.my.website.com“;
var doc = new jsPDF(
{
orientation: 'l',
unit: 'mm',
format: [400, 210]
});
doc.autoTable(
{
html: '#tableText,
useCss: true
});
var file = doc.output();
Email.send(
{
Host: hostName,
Username: emailSender,
Password: „somePassword“,
To: emailReceiver,
Attachments :
[{
name : fileName,
data : file
}],
From: emailSender,
Subject: emailSubject,
Body: emailBody
}).then(
message => alert(message)
);
//doc.save(fileName);
}
}
不幸的是,这不起作用,因为将使用 alert(message) 抛出以下行:
输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或非空格 填充字符中的字符
请注意:
- 发送不带附件的电子邮件时(注释掉该部分 带有“附件:”)已发送电子邮件!
- 我们尝试避免先将 PDF 文件保存为 PDF 的存储 Android 与 iOS 的文件不同。
附上你会发现-garbage(!)-file的内容供你参考。
需要更改/更改哪些代码以及如何使其工作以将“真实”PDF 文件作为附件发送?
如果上面的行没有意义,我们会很高兴看到更好的代码!
【问题讨论】:
标签: javascript angularjs pdf jspdf jspdf-autotable