javascript - 使用客户端 JavaScript 将文件附加到 PDF?
问题描述
如何仅使用客户端浏览器 JavaScript 将任意文件(例如 XLSX)附加/嵌入到 PDF 文件?
如果重要,用户可以使用输入文件按钮和从外部 Web 服务接收并以 base64 编码的 PDF 来提供 XLSX。
我不是在寻找一个完整的解决方案(如果它存在那就太好了),但是你将如何以更高层次的方式解决这个问题
文件使用二进制文件流附加,在 PDF 文件中如下所示:
32 0 obj
<</Type /EmbeddedFile /Subtype /{mimetype} /Length 72>>
stream
{file data}
endstream
endobj
解决方案
对于这种情况,您可以使用JSPdf 库。您必须学习JavaScript 插件和该库的addImage 插件源代码,以了解如何完成文件附件。对于这种情况,我认为 JavaScript 插件源代码更容易理解。
我不是在寻找完整的解决方案
是的,你必须自己编写一个完整的解决方案,因为现在这个库不支持自定义文件附件。
文件使用二进制文件流附加,在 PDF 文件中如下所示:
32 0 obj <</Type /EmbeddedFile /Subtype /{mimetype} /Length 72>> stream {file data} endstream endobj
是的,像这样的一些你必须写。你必须意识到你也必须编写一个从 PDF 文件中读取的代码。
替代解决方案
但是,如果这对您来说太难或工作量太大,那么您必须考虑在服务器端完成所有这些工作。您可以使用 AJAX 向您的服务器发送请求,服务器会执行此操作并返回一个新的 PDF。
在这种情况下,您可以使用免费的 PHP 库(例如FPDI )编辑 PDF 服务器端。使用 FPDI 可以阅读和编辑 PDF 文档(使用createByFile()
阅读 PDF 的方法)。FPDI 是FPDF库的扩展版本,具有附件插件。
推荐阅读
- c# - 错误“参数是值,而参数声明为”是什么意思?
- php - PHP CLI、WGET 和 CURL。哪一个使用 cronjob 获得更好的 CPU/RAM 性能?
- reactjs - React Redux - 将数据从状态传递到另一个组件以显示结果列表
- azure - 导入 Azure 数据工厂 V2 ARM 模板时,顶部添加了意外字符
- amazon-redshift - 如何在 Amazon Redshift SQL 中制作连续整数表?
- arrays - 如何根据django中ArrayField中的最后一个元素进行过滤
- php - Wordpress 无法修改标题信息错误
- laravel - LARAVEL 在文件上传中从 isValid 获取错误
- python - 在 Centos 服务器上访问 Docker 容器
- r - 如何将数据框列的所有唯一值组合成一个字符串