0

itextSharp 4.1.6 を使用して AcroFields を既存の PDF に追加し、2 番目のステップでこれらのフィールドにコンテンツを入力します。これらのドキュメントを Adob​​e Reader で開くと、コンテンツが表示されます。ドキュメントを印刷しようとすると、入力されたすべてのフィールドが空です。

これは、編集可能な PDF とフラット化された PDF の両方で発生します。「GenerateAppearances」は True に設定されています。現在のライセンスの概念により、別のバージョンにアップグレードできません。私のコード:

var dlg = new OpenFileDialog
{
    FileName = "",
    Filter = @"pdf|*.pdf"
};
if (dlg.ShowDialog() != DialogResult.OK) return;

// first step: create field
var outputpath1 = Path.Combine(Path.GetTempPath(), string.Format("{0}.pdf", Guid.NewGuid().ToString("N")));
var pdfReader1 = new PdfReader(dlg.FileName);
var output1 = new FileStream(outputpath1, FileMode.Create, FileAccess.Write);
var stamper1 = new PdfStamper(pdfReader1, output1);
InsertTextfield(stamper1, 1, 20, 500, 150, 100, "test");
stamper1.Close();
pdfReader1.Close();

// second step: insert some text
var outputpath2 = Path.Combine(Path.GetTempPath(), string.Format("{0}.pdf", Guid.NewGuid().ToString("N")));
var pdfReader2 = new PdfReader(outputpath1);
var output2 = new FileStream(outputpath2, FileMode.Create, FileAccess.Write);
var stamper2 = new PdfStamper(pdfReader2, output2);
stamper2.AcroFields.GenerateAppearances = true;
var formData = stamper2.AcroFields;
formData.SetField("test", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. ");
stamper2.Close();
pdfReader2.Close();

Process.Start(outputpath2);

そしてInsertTextField

private static void InsertTextfield(PdfStamper stamper, int page, float x, float y, float width, float height, string fieldname)
{
    var field = PdfFormField.CreateTextField(stamper.Writer, true, false, 500);
    field.SetWidget(new Rectangle(x, y, x + width, y + height), PdfAnnotation.HIGHLIGHT_INVERT);
    field.SetFieldFlags(PdfAnnotation.FLAGS_PRINT);
    field.FieldName = fieldname;
    stamper.AddAnnotation(field, page);
}

ドキュメントについては、新しいワード ドキュメントを作成し、テキストを追加して PDF として保存するだけです。このドキュメントを選択して開始します。

では、ファイルした内容を印刷物に表示するにはどうすればよいでしょうか?

編集:コードを追加

4

1 に答える 1