有没有办法使用 JavaScript(或 C#)打开 PDF 文档并使用 Acrobat 自动打开它,让用户编辑文档并在用户关闭文档时保存回服务器。
根据我的研究,我发现人们推荐 iTextsharp,但我认为这不会达到我想要完成的效果。
基本上,我试图模仿 SharePoint 的签出/签入功能。
有没有办法使用 JavaScript(或 C#)打开 PDF 文档并使用 Acrobat 自动打开它,让用户编辑文档并在用户关闭文档时保存回服务器。
根据我的研究,我发现人们推荐 iTextsharp,但我认为这不会达到我想要完成的效果。
基本上,我试图模仿 SharePoint 的签出/签入功能。
很大程度上可能取决于您要完成的工作以及您对环境/用户的控制程度。看看 Acrobat X 和 SharePoint 的功能,似乎 Acrobat X 中内置了对 SharePoint 的支持。
这可以通过创建 Acrobat 插件轻松完成(嗯 :-))。插件能够监控 Adobe Acrobat 中的无数事件并对其做出反应。他们可以做一些复杂的事情,例如添加一个文件系统(例如,它允许您打开和保存实际存储在数据库中的文件),但当然还有更简单的策略可以想象。
想象一个存在于 Adobe Acrobat 中的插件,它监视用户打开的每个文件。在看到从您的服务器打开的文件后,它将该文档标记为您的文件之一,并在服务器上将其签出(但是您想实现它)。当用户保存文档时,也会收到通知(在实际保存之前和之后),并且可以再次采取适当的操作。
所以一般的答案是肯定的,这在某些情况下是可行的,如果你愿意编写一个插件并且你对你的环境有足够的控制权,你可以确保所有用户实际上都在 Adobe Acrobat 中安装了这个插件.
要将文档保存回 SharePoint,应在客户端应用程序中提供支持。如果我正确理解 Acrobat X 支持此http://pdfdevjunkie.host.adobe.com/pdf/AcrobatXandMicrosoftSharePoint.pdf。这不是你要找的吗?
忽略浏览器,因此假设您在 C# 应用程序中工作,这是很有可能的,并不像看起来那么复杂。详细信息将取决于您的确切设置,但我建议您这样做:
从服务器下载文件并将其存储在具有.PDF 扩展名的临时位置。您的下载可能通过 HTTP或通过 UNC 路径或映射驱动器。确保您保存到的位置是您可以读取/写入和删除文件的位置 -标准临时文件夹就足够了。
使用Process.Start启动 Acrobat。如果 Acrobat(或其他合适的编辑器)将在用户系统上注册为用户双击 PDF 时打开的默认程序,您可以只处理。启动文档本身而不指定特定的动词(命令)。否则,您可以查找并指定正确的动词或启动 Acrobat 本身并指定文件名。
您可以等待用户关闭 Acrobat,即Acrobat 进程完成,或者观察文件的更改并在它完成时做出反应。请记住,如果监视更改,Acrobat 可能会保留对文件的独占锁定,直到用户关闭该文档或 Acrobat,因此您可能需要等待 Acrobat 完成或在检测到更改后,定期检查(轮询)直到您可以访问该文件。
据我所知,没有编辑 PDF (26.06.13) 的 JS 解决方案,但有一种方法可以预览它们,例如使用纯 JS 解决方案 PDF.JS。
您需要使用纯提交的数据在服务器端生成 PDF 文件。