4

.net コードから Adob​​e PDF の使用権をプログラムで有効にする方法はありますか? ITextSharp ライブラリを使用して XFA フォームに XML データ (アプリから生成) を入力していますが、出力 PDF では使用権限が有効になっていないため、ユーザーは操作できません (通常は問題にはなりませんが、元の PDF は政府提供であり、ユーザーはいくつかの検証ボタンをクリックする必要があり、そのプロセスはユーザー/会社固有です)

これは Adob​​e Reader から手動で実行できますが、Adobe Acrobat Professional ライセンスが必要です。

Google は「それができるのは Adob​​e 製品だけ」と言っています.. ( http://old.nabble.com/Enable-Adobe-Reader-usage-rights-td14276927.html )

string pathPDF = @"C:\original.pdf";
string pathCreated = @"C:\created.pdf";
string pathXml = @"C:\data.xml";

using (PdfStamper stamper = new PdfStamper(new PdfReader(pathPDF), System.IO.File.OpenWrite(pathCreated)))
{
    stamper.FormFlattening = false;
    stamper.AcroFields.Xfa.FillXfaForm(pathXml);

    stamper.Close();
}
4

5 に答える 5

5

プログラムでこれを行う唯一の方法は、Adobe Reader Extension Server を使用することです。アドビのホワイトペーパーは、 http ://www.adobe.com/sea/products/server/readerextensions/pdfs/readerextensionsserver_ds.pdf で確認できます。

上記の場合、iTextSharp を使用して Pdf ドキュメントを作成し、次に Adob​​e Reader Extension Server を使用して、PDF ドキュメントが Adob​​e Reader で拡張機能を持つようにします。

ただし、iTextSharp を操作して、既に Reader 対応の PDF ドキュメントに入力できる小さなウィンドウがあります。そのような Pdf ドキュメント (Reader Enabled) がある場合は、iText/iTextSharp を使用して XFA データを入力できます。ここで例を確認できます: http://itextpdf.com/examples/iia.php?id=166

幸運を!

于 2011-03-11T00:19:53.957 に答える
2

現在、使用権を有効にできるのは次の 2 つの製品のみです。

  • Adobe Acrobat - 500 人未満のユーザー向け
  • Adobe LiveCycle Reader Extensions - 500 人以上のユーザー

この機能に関する調査結果がいくつかありました ここ.

于 2011-05-05T12:17:51.630 に答える
1

これは私のために働いた:

            string TempFilename = Path.GetTempFileName();

            PdfReader pdfReader = new PdfReader(FileName);
            //PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create));
            PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create), '\0', true);

            AcroFields fields = stamper.AcroFields;
            AcroFields pdfFormFields = pdfReader.AcroFields;

            foreach (KeyValuePair<string, AcroFields.Item> kvp in fields.Fields)
            {
                string FieldValue = GetXMLNode(XMLFile, kvp.Key);
                if (FieldValue != "")
                {
                    fields.SetField(kvp.Key, FieldValue);
                }
            }

            stamper.FormFlattening = false;
            stamper.Close();
            pdfReader.Close()
于 2013-09-02T23:40:27.677 に答える
1

いいえ、Adobe はそれを保証するために強力な暗号を使用しています... PPK だと思います。

Googleは「それができるのはAdobe製品だけだ」と言っている

これは、アドビ製品だけがそれを行うことができるためです。一部の Acrobat サーバー製品またはその他の... $$$... を支払うことができますが、それだけです。

于 2011-03-10T21:37:13.067 に答える