2012-08-04 40 views
6

我有一个现有的swing桌面应用程序,我希望将其转换为Web应用程序。停止这样做的第一件事是桌面应用程序处理PDF文件的写入和读取。此外,用户填写需要由应用程序读取的PDF表单。处理文件的Web应用程序 - 上传下载

现在桌面应用程序中的典型用例就像用户登录打开PDF表单并填充它。 swing应用程序管理文件的存储位置,以便它转到文件并读取表单,提取数据并将数据存储在数据库中。用户可能无法一次填充表单。他可能会保存它,稍后再回来并继续。

所有这些都需要现在通过网络应用完成。我的问题是我不希望用户多次下载并上传表单到服务器。这会占用带宽,并要求使用本地保存文件,并在完成填写表单后不会吸引我,因为桌面应用程序很好地管理这些文件的位置。

我需要实现类似Dropbox的东西吗?一个小的deamon不断运行,以检查哪些文件已更新并将其上传到服务器?这将是困难的,因为在服务器我不知道该文件是否是最新的。有没有像以前有人做过的事情?

回答

5

我有其他建议:为什么不向用户显示具有相同字段的表单,并在用户提交后将其转移到PDF中。这样Pdf就不会离开服务器,只传输最少量的数据。

+0

感谢您的回答。但请参阅jowierun下的评论.. – sethu 2012-08-10 12:35:25

3

切换到Web版本的应用程序可能会迫使您重新考虑一些您正在做的事情。当然,浏览器有意限制他们访问本地文件系统,这为当前的操作模式引入了一个主要障碍。

即使您可以在浏览器中显示PDF,检测编辑的完成并将其从浏览器代码(这可能是可能的)发送回服务器,您将受到不同浏览器做不同(奇怪)与任何pdf插件安装的东西。

正如Vitaliy已经提到的,能够在浏览器中填充(网络)表单的切换意味着整个下载上传问题消失。但是,你必须采取用户在网页上完成的内容,并以某种方式将其抽成PDF。如果您不必从PDF开始,但可以收集数据并在最后生成PDF,那么您可能有更多选项。例如,如果您没有太多样式的文档可以使用,则可以使用iText直接创建PDF。您可以使用Docmosis之类的东西,您可以为其提供模板并在稍后填充并呈现PDF。使用Docmosis选项,您还可以向Docmosis询问模板中的字段列表,以便可以基于所选模板构建Web表单,让用户填写它,然后将该数据推送到Docmosis以生成文件。

希望有一些选项对您有用。

+0

不幸的是,那将很难做到。这些pdf有很多字段。他们不属于我。它们是带有数字签名和附件以及内容的XFA表单。无论如何,这个问题不仅限于PDF格式。有Word文档,Excel和任何其他用户想要使用的文档。对不起,我应该早些时候提到这个问题.. – sethu 2012-08-10 12:35:00

0

Adob​​e documents how to do this here。永远不要低估谷歌设计的力量。我知道这可以工作,因为我已经在线使用PDF表单。

+0

PDF格式不是简单的FDF导出的数据,而是XFA http://partners.adobe.com/public/developer/xml/index_arch.html这是更多复杂。我真的不想在我的html页面上有一个表单域来替换表单中的每个域。这就是为什么表格首先出现在那里。 – sethu 2012-08-16 01:47:57

0

几年前,我在类似的问题上工作,虽然我没有处理签名表单。签名肯定会让它更难一点。但是,我能够使用iText创建带有字段的PDF表单,并且只将字段数据提交回服务器。不速之客,不幸的是,我不记得究竟是什么/我们如何做,但可以确认它是可行的(有限制/警告)。例如:用户必须安装PDF阅读器插件。&用户每次都被迫d/l pdf。

基本上我所做的就是使用iText从PDF中创建FDF(使用表单现有的表单域)。 FDF中的提交按钮实际上将表单数据提交给您选择的URL(与HTML表单不同)。一旦你有了这些数据,我相信我使用iText将表单域(来自FDF)与服务器端的PDF合并在一起。

一旦您使用服务器来维护所有表单数据,则用于确保单个用户更新最新和最佳表单数据的同步/锁定过程由您决定。

你在jowierun下的评论表明你想要处理word/excel/etc文档,所以我不完全相信我理解你的需求。您的初始文章讨论了在本地填写PDF表单的需求,但之后听起来您正在寻找文件共享系统。

请问你能澄清你到底想要完成什么吗?

+0

嘿Eric,你说得对,它将是一个文件共享系统。但我更关心PDF表单。我的服务器将读取/写入这些PDF表单。问题是,当用户完成填写表单并且我需要从服务器的表单读取数据时,我需要知道表单是最新的表单。我不想让我的用户通过下载 - 填充上传周期,这是非常乏味的。相反,如果循环变成下载 - 填满,然后服务器知道它需要从用户的系统中获取表单,那么这将是理想的 – sethu 2012-08-16 01:51:21

+0

我更新了我的答案,为您提供了一些额外的背景知识。但是你的要求没有太大意义。您希望将保存的PDF存储在客户端上,并让您的服务器在需要时从客户端检索PDF?它现在几乎听起来像是一个P2P系统。如果客户端不在线怎么办?或客户端的高清崩溃等?上传过程只会上传现场数据,所以不会比单击“保存”更繁琐。 – 2012-08-16 15:04:16

+0

不是p2p,而是我在考虑像deamon这样的保管箱可以继续在客户端的背景上运行。这将继续检查是否有任何下载的文件已被修改,如果有,它会将其上传到服务器。我不能让用户输入表单字段并将其与PDF合并,因为它有很多繁琐的工作,因为有超过100个表单。这些形式不是FDF,而是XFA形式。我可以让deamon与服务器通信,所以我会知道当客户端登录时deamon没有运行。 – sethu 2012-08-17 01:46:29

相关问题