い方は、強制フォーマットおよび計算PDFる場合、その他の分野をiTextSharp?
-
19-08-2019 - |
質問
私はPDF形式のテキスト。の値を入力したこれらの分野の計算に使用される値と他の分野の計算分野の読み取り専用)。
私フォームを開くには、Adobe Readerを記の計算の分野で自動的に再計算.
しかし、私が使っていiTextSharpの分野でカーブを平坦化に伴う形で、そのストリームの平坦化された形式のユーザーのweb.
この作品は、イブレア城、イブレア以外の計算分野においを算出いたします。いと仮定してユーザーがイベントなどkeydownsまたはフォーカスまたはブラー)が発射の計算なが発生します。
明らかに、私を除去することが可能であることを計算にfillable形を行うすべてのサーバーをしているので、充分野に前後してしまいましたが、まず私のfillable形で利用可能で、人間としても、サーバーにコピーします。
というか、計算?
編集:Were感もiText/iTextSharp愛はこちら---
ここにいくつかの例があります。設定スタンパー.AcroFields.GenerateAppearancesをtrueになります。
I 考え しかもグラバー園のどこかのページでの行動が、わからないトリガーで...
解決
Paulo Soares(iTextの主要な開発者の1人であり、iTextSharpの現在のメンテナー)意見:
iTextは修正する努力をしません 計算フィールド それは不可能です。 PdfCopyFields 時々それをサポートしています 動作し、時には動作しません。
他のヒント
これを行う方法を見つけました。 stackoverflowの質問に対する私の答えをご覧ください:
って更新すべての計算分野のpdfを呼び出してjavascriptの方法calculateNowのDocオブジェクトです。
によると、adobe javascriptの文書 this.calculateNow();
力計算の計算の分野で現在の書きします。
が形を含む多くの計算ができる大きな遅延後にユーザ入力データの分野でもない場合は計算ます。一つの戦略はoffにして計算時点を振り返降を参照します。
のjavascriptコiTextSharp:
using (PdfReader pdfReader = new PdfReader(pdfTemplate))
using (PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create)))
{
// fill f1 field and more...
AcroFields pdfFormFields = pdfStamper.AcroFields;
pdfFormFields.SetField("f1", "100");
//...
// add javascript on load event of the pdf
pdfStamper.JavaScript = "this.calculateNow();";
pdfStamper.Close();
}
サーバー側で、計算フィールドに回答があるかどうかを確認します。そうでない場合は、それらを計算します。
Greg Hurlmanが言うように、サーバー上で自分で計算する必要があります。これは単に便利なだけではなく、実際には正当な理由があります。
顧客が持っているファイルはすべて、ねじ込む可能性があります。 PDFフォームの目的はわかりませんが、どういうわけかお金に関係している可能性があります。そのため、計算結果に誤った結果を表示させることで、不正行為をする可能性があります。クライアント側で行われた計算を信頼する場合、それを検出する方法はありません。
クライアントからPDFフォームを受け取ったら、すべての計算をやり直して、正しいことを確認する必要があります。次に、比較するクライアントのバージョンもある場合は、それらがねじ込まれているかどうかを確認する必要があります。
あなたのクライアントはそれほど信頼できないと思いませんか?あなたには良いが、証拠は同意しない。私のプログラミングの最初の紹介の1つは、SimCityがより多くのお金を稼ぐためのセーブゲームを開くことでした。何らかの方法でチートする機会が存在する場合、ある時点で人々はそれを試してみます。