如何仅使用客户端浏览器JavaScript将任意文件(例如XLSX(附加/嵌入到PDF文件?
如果重要的话,XLSX是由用户使用输入文件按钮和从外部web服务接收并编码在base64中的PDF来提供的。
我不是在寻找一个完整的解决方案(如果它存在的话那就太好了(,但你将如何以更高层次的方式处理这个问题
文件是使用二进制文件流附加的,在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库编辑PDF服务器端,例如FPDI。使用FPDI可以读取和编辑PDF文档(使用createByFile()
方法读取PDF(。FPDI是FPDF库的扩展版本,该库具有用于附件的插件。