这个问题的用例很简单,但我很难找到一个好的解决方案。
我想让我的用户(通过网络应用程序(填写一些存储在服务器中的pdf文件(pdf格式的表格,开始越来越流行(。
事实上,像chrome或acrobat阅读器这样的应用程序能够在本地打开时完美地填充它们。
我已经允许docx和xlsx文件具有此功能,为此我使用Webdav和自定义协议ms-word和ms-excel。它工作得很好。
对于pdf,我没有找到等效的。看起来主pdf阅读器/编辑器没有实现这个协议。当我们用这些工具打开远程文件时,它们在保存时无法获得写入权限,或者试图在本地保存文件(。
我看的另一个选项是新的文件系统访问api(https://web.dev/file-system-access/)。但我还是没能让它正常工作。这里的主要问题是我们如何编辑文件。?我可以使用这个api在本地下载文件,并保留文件处理程序来检索更新,但我阻止了如何编辑文件?就像fileHandler上的一个选项说";用操作系统上的默认编辑器打开这个文件;。这将是完美的。但现在要编辑文件,我必须在eplorer上手动打开它。我不能要求我的最终用户这样做,因为他们编辑错误的文件的风险太大了。
桌面上的另一个选项是用于编辑PDF的不同javascript库,但最后一个看起来非常昂贵,通常在客户端非常繁重,并且具有我绝对不需要的高级功能。我只想填写表格并检索已完成的pdf文件。所以我想避免这种选择。
最后一个选项,我已经在我的应用程序中使用了pdf.js(来自mozilla(和pdf-lib.js来实现一些绘图功能。我在想
- 使用pdf.js渲染pdf
- 使用pdf-lib检索pdf的所有表单字段(id、类型、大小、位置(
- 使用pdf库提供的信息在pdf顶部生成html输入
- 我让用户填写输入,并在他完成后点击保存按钮
- 在保存时,我使用pdf-lib编辑我的pdf,通过获取相应html输入的值来设置所有表单字段的值,然后检索更新后的pdf。这个解决方案对我来说越";可行";。但我担心开发的数量,它将如何渲染,处理缩放,旋转等。我不想有我的自定义解决方案
我精确定位了我的网络应用程序目标chrome,所以不能使用chrome pdf查看器/编辑器来做我想做的事情让我很疯狂。
附言:我很难在stackoverflow上发布这个问题。前一个被删除了,因为我有确切的原因。我试着对这个问题更具体一些,但如果这是一个愚蠢的问题,请回答
我感觉到你的痛苦,这目前是不可能的。Adobe acrobat可以从webdav位置打开PDF(只需调用acrobat.exe并传入webdav UNC即可(,但无法从浏览器触发此操作。
如果你能够将软件部署到你的客户机器上,你可以创建一个自定义的URL方案来做到这一点。。。