2017-05-25 80 views
0

我有一個pdf文檔,我使用下面的代碼填充所有的值。使用iTextSharp和C格式化pdf上的文本控件#

using(MemoryStream ms = new MemoryStream()) 
{ 
    // Fill the PDF with the XFA 
    using(PdfStamper stamper = new PdfStamper(oInPDF, ms)) 
    { 
    stamper.Writer.CloseStream = false; 
    XfaForm.SetXfa(oXFA, stamper.Reader, stamper.Writer); 
} 

// Code for Flatten the filled PDF. 
} 

我想圍繞顯示的值繪製一個紅框,當值不在預期的範圍內時突出顯示。 我想知道,我如何使用iTextSharp和C#在pdf頁面上找到控件的位置。

任何幫助或信息,非常讚賞。

很多謝謝。

+0

您正在使用XFA表單。 IText高級API僅爲AcroForm表單提供表單編輯功能(以及對*填充* XFA表單的有限支持)。但是您已經使用低級別的方法來設置整個XFA定義。因此,你只需要相應地操作那個'oXFA'。 – mkl

回答

0

最後設法用下面的代碼繪製控件邊界。

XmlDocument newXMLDoc = new XmlDocument(); 
newXMLDoc.LoadXml(@"<border><edge thickness=""1.3mm""><color value=""0, 0, 255""/></edge></border>"); 

if (Rs.Rows.Count > 0) 
{ 
    foreach (DataRow query in Rs.Rows) 
    { 
     if(isRET) 
      { 
      if (oXFA.DomDocument.SelectSingleNode("//t:*[@name='" + Rs[0] + "']", oNameSpace) != null) 
      { 
       XmlNode newNode = 
oXFA.DomDocument.ImportNode(newXMLDoc.SelectSingleNode("border"), true); 
oXFA.DomDocument.SelectSingleNode("//t:*[@name='" + Rs[0] + "']", oNameSpace).AppendChild(newNode); 
      } 
      } 
    } 
}