既存の Acroform に目次を挿入するプロセスがあり、そのコンテンツを開始する必要がある場所を追跡できます。ただし、そのポイントの下に既存の Acrofields があり、挿入するテーブルの高さに基づいて上下に移動する必要があります。では、アクロフィールドの位置を変更するにはどうすればよいでしょうか。以下は、位置を「取得」するために使用できるコードです...しかし、今度はそれを「設定」できる必要もあります。
....
// Initialize Stamper ("output" is a MemoryStream object)
PdfStamper stamper = new PdfStamper(pdf_rdr, output);
// Get Reference to PDF Document Fields
AcroFields fields = stamper.AcroFields;
//call method to get the field's current position
AcroFields.FieldPosition pos = GetFieldPosition(fields, "txt_footer");
// ** ここでフィールドの新しい位置を明示的に設定する必要があります
//assuming a call to "RegenerateField" will be required
fields.RegenerateField(txt_footer);
....
//helper method for capturing the position of a field
private static AcroFields.FieldPosition GetFieldPosition(AcroFields fields, string field_nm)
{
////////////////////////////////////////////////////////////////////////////////////
//get the left margin of the page, and the "top" location for starting positions
//using the "regarding_line" field as a basis
IList<AcroFields.FieldPosition> fieldPositions = fields.GetFieldPositions(field_nm);
AcroFields.FieldPosition pos = fieldPositions[0];
return pos;
}