2017-05-25 75 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); 
      } 
      } 
    } 
}