2012-08-04 10 views
6

Webアプリケーションに変換したい既存のスイングデスクトップアプリケーションがあります。最初のことは、デスクトップアプリケーションがPDFファイルの書き込みと読み取りを処理することです。また、ユーザーは、アプリケーションによって読み取られる必要があるPDFフォームを埋め尽くします。ファイルを処理するWebアプリケーション-upload download

デスクトップアプリケーションの典型的な使用例は、ユーザーがログインしてPDFフォームを開いていったときのようなものです。スイングアプリケーションは、ファイルが格納されている場所を管理し、ファイルに移動してフォームを読み取り、データを抽出してdbに格納します。ユーザーがフォームを一度に入力しない可能性があります。彼はそれを後でそれに戻って保存し、続けるかもしれない。

これはすべて今すぐウェブアプリで行う必要があります。私の問題は、ユーザーがフォームを複数回ダウンロードしてサーバーにアップロードしないようにすることです。それは帯域幅を消費し、また、ファイルをローカルに保存して、フォームの記入が完了したらそれをアップロードするように要求することは、デスクトップアプリケーションがこれらのファイルの場所を管理するのにうまく使用されて以来、私にとって魅力的ではありません。

私はドロップボックスのようなものを実装する必要がありますか?継続的に実行されている小さなデーモンは、どのファイルが更新されているかを確認し、それをサーバーにアップロードしますか?サーバーではファイルが最新であるかどうかわからないので、それは難しいでしょう。誰かが以前にしたかもしれないこのようなものはありますか?

答えて

5

私はお勧めがあります:ユーザーが同じフィールドを持つフォームを表示して、ユーザーが送信した後にそれらをPDFに転送するのはなぜですか。この方法では、Pdfはサーバーから離れず、最小限のデータだけを送信します。

+0

答えに感謝します。しかし、jowierunの下にあるコメントを参照してください。 – sethu

3

アプリケーションのWebバージョンに切り替えると、あなたが何かしていることを再考する必要が生じるかもしれません。確かに、ブラウザはローカルファイルシステムへのアクセスが意図的に制限されているため、現在の操作モードに大きな障害があります。

ブラウザでPDFを表示しても、編集が完了したことを検出してブラウザのコード(これはおそらく可能です)からサーバーに戻すことができたとしても、ブラウザによっては異なる)何かpdfプラグインがインストールされているもので。

既に言及したように、ブラウザで(ウェブ)フォームを取り込むことができるということは、ダウンロード全体のアップロードの問題がなくなることを意味します。しかし、ユーザーはWebページで行ったことを何とかして、何とかPDFに変換する必要があります。 PDFで始めるのではなく、データを収集して最終的にPDFを作成できる場合は、さらに多くのオプションがあります。たとえば、あまりにも多くの文書スタイルの文書を扱えない場合は、iTextを使用して直接PDFを作成することができます。 Docmosisのようなものを使うことができます。これは、テンプレートを与えて後でPDFを生成してレンダリングすることができます。 Docmosisオプションを使用すると、Docmosisにテンプレート内のフィールドのリストを尋ねることができます。そのため、選択したテンプレートに基づいてWebフォームを作成し、ユーザーに入力させてから、そのデータをDocmosisにプッシュしてファイルを生成させることができます。

便利なオプションがいくつかあります。

+0

残念ながら、それは難しいでしょう。これらのpdfには膨大な数のフィールドがあります。彼らは私のものではありません。デジタル署名や添付ファイルなどのXFA形式です。とにかく、問題はPDFフォームに限られていません。単語の文書、Excel、およびユーザーが使用したい他の文書があります。申し訳ありませんが、これは以前の質問でこれを言及しておきました。 – sethu

0

Adob​​e documents how to do this here。決してgoogleのデザインの力を過小評価しないでください。私はPDFフォームをオンラインで使っているので、これがうまくいくことがわかっています。

+0

PDFフォームは単純なFDFエクスポートデータではなく、XFA http://partners.adobe.com/public/developer/xml/index_arch.html複合体。私は本当に自分のHTMLページ上のフォームフィールドをフォームのすべてのフィールドに置き換えたいとは思わない。だからこそフォームが最初にあるのです。 – sethu

0

私は署名されたフォームを扱っていませんでしたが、私は数年前に同様の問題に取り組みました。署名は間違いなくそれを少し難しくします。しかし、フィールドを持つPDFフォームを作成するためにiTextを使用し、フィールドデータをサーバーにのみ提出することができました。私は残念ながら、私たちが何をやったのかを覚えていませんが、それが実行可能であることを確認することができます(制限事項/注意事項あり)。例:ユーザーがPDFリーダープラグインをインストールしていなければならない&ユーザーは毎回PDFをd/lに強制されました。

基本的には、iTextを使用してPDFからFDFを作成しました(既存のフォームフィールドを使用)。 FDFの[送信]ボタンは、実際にフォームデータをあなたの選択したURLに送信します(HTMLフォームとは異なります)。そのデータを取得したら、フォームフィールド(FDFから)をiTextを使ってサーバー側のPDFにマージしたと思います。

サーバーを使用してすべてのフォームデータを管理したら、単一のユーザーが最新かつ最高のフォームデータを確実に更新するために使用する同期/ロックプロセスはあなた次第です。

jowierunの下のあなたのコメントは、あなたがword/excel/etcの文書も扱いたいことを示しているので、あなたのニーズを理解しているとは私は完全には分かりません。あなたの最初の投稿では、PDFフォームをローカルに記入する必要性について話し合ったが、その後はファイル共有システムを探しているように思える。

達成しようとしていることを明確にしてください。

+0

ちょっとエリック、あなたはそれがファイル共有システムになるだろう。しかし、私はPDFフォームにもっと関心を持っています。私のサーバーはこれらのPDFフォームの読み書きを行います。問題は、ユーザーがフォームの記入を完了し、サーバーのフォームからデータを読み取る必要がある場合、フォームが最新のフォームであることを知る必要があります。私は私のユーザーにダウンロードを完了するように頼みたくはありません。代わりに、サイクルがダウンロードが完了し、サーバーが進行する前にユーザーのシステムからフォームを取得する必要があることがわかっている場合、それは理想的なものになります。 – sethu

+0

私の回答が更新されました。しかし、あなたの必要条件はあまり意味がありません。保存したPDFをクライアントに保存し、必要に応じてサーバーがクライアントからPDFを取得するようにしますか?今はP2Pシステムとほぼ同じように聞こえる。クライアントがオフラインの場合はどうなりますか?またはクライアントのHDがクラッシュするなどアップロードプロセスではフィールドデータのみがアップロードされるため、「保存」をクリックするより面倒ではありません。 –

+0

p2pではなく、むしろデーモンのようなドロップボックスをクライアントのバックグラウンドで実行し続けることができると思っていました。これにより、ダウンロードされたファイルが変更されているかどうかがチェックされます。変更されている場合は、そのファイルがサーバーにアップロードされます。フォームフィールドを入力してPDFとマージするようにユーザーに依頼することはできません。なぜなら、フォームが100以上あるように面倒ですからです。これらの形式はFDFではなくXFA形式です。私はデーモンをサーバーと通信させることができるので、デーモンがクライアントのログオン時に実行されていないかどうかを知ることができます。 – sethu

関連する問題