我正在使用iTextSharp在PDF文件中绘制TextField。请查看我用于绘制TextField的代码:
//getting pdf file from the Temp folder
string p_FileName1 = Path.GetTempFileName();
//Pdf Reader reading the file
TextSharp.PdfReader rdr = new TextSharp.PdfReader(p_FileName);
//Initialize the PdfStamper
TextSharp.PdfStamper stamper = new TextSharp.PdfStamper(rdr,File.Create(p_FileName1));
//here is calculating the point position of the Area drawn for the Textboxes to be displayed
float pointX1 = Global.Percent(item.TextBoxInfoList[i].point.Point.X, 1.0f, Convert.ToSingle(page.Width.Point)) + 12;
float pointY1 = Global.Percent(item.TextBoxInfoList[i].point.Point.Y, 1.0f, Convert.ToSingle(page.Height.Point)) + 12;
float pointX2 = Global.Percent(item.TextBoxInfoList[i].po2.X, 1.0f, Convert.ToSingle(page.Width.Point)) + 12;
float pointY2 = Global.Percent(item.TextBoxInfoList[i].po2.Y, 1.0f, Convert.ToSingle(page.Height.Point)) + 12;
float tw = pointX2 - pointX1;
float th = pointY2 - pointY1;
pointY1 = Convert.ToSingle(page.Height.Point) - pointY2;
System.util.RectangleJ rec;
//-- Position 5 point so that it will align with the requirement.
rec = new System.util.RectangleJ((pointX1 -5), pointY1, tw, th);
TextSharp.TextField tf = new TextSharp.TextField(stamper.Writer, new iTextSharp.text.Rectangle(rec), fieldname);
stamper.FormFlattening = true;
stamper.AddAnnotation(tf.GetTextField(), pageNumber + 1);
下面是我用于查找TextDrawn位置的百分比函数
public static float Percent(float complete, float total, float max)
{
if (complete == 0.0f || total == 0.0f) return 0.0f;
return (complete / total) * max;
}
这是代码对我来说很好,除了我在Y轴上遇到Textfield的放置问题。有时它是绘制点和预期点的点。但大多数情况下,它会在Y轴上放置并在预期位置下方或上方绘制。使用不同的PDF文件会发生这种情况。如果需要进一步澄清我的代码,请告诉我。