使用下面的代码,插入的矩形位于页面的左下角。如何在绝对位置插入iTextSharp.text.Rectangle
矩形?感谢。
iTextSharp.text.Rectangle rectangle = new Rectangle(10, 10, 100, 15, 0);
// (lower-left-x, lower-left-y, upper-right-x (llx + width), upper-right-y (lly + height), rotation angle
rectangle.BorderColor = BaseColor.WHITE;
rectangle.BackgroundColor = BaseColor.YELLOW;
overContent.Rectangle(rectangle);
//stamper.Close();
PdfAnnotation annotation = PdfAnnotation.CreateLink(
stamper.Writer, rectangle, PdfAnnotation.HIGHLIGHT_INVERT,
new PdfAction("http://itextpdf.com/"));
stamper.AddAnnotation(annotation, 1);
答案 0 :(得分:1)
OP在评论中说
无论我如何更改x& x,都会在生成的PDF的左下角始终显示超链接矩形。 矩形参数中的y值(int x,int y,int width,int height)。
这里的错误变得明显,OP假定Rectangle
构造函数的第三个和第四个参数是宽度和高度。事实并非如此,参见记录的Rectangle
构造函数源代码:
/// <summary>
/// Constructs a Rectangle-object.
/// </summary>
/// <param name="llx">lower left x</param>
/// <param name="lly">lower left y</param>
/// <param name="urx">upper right x</param>
/// <param name="ury">upper right y</param>
public Rectangle(float llx, float lly, float urx, float ury)
...
/**
* Constructs a <CODE>Rectangle</CODE>-object.
*
* @param llx lower left x
* @param lly lower left y
* @param urx upper right x
* @param ury upper right y
* @param rotation the rotation (0, 90, 180, or 270)
* @since iText 5.0.6
*/
public Rectangle(float llx, float lly, float urx, float ury, int rotation)
和cf.也是OP自己代码中的评论:
// (lower-left-x, lower-left-y, upper-right-x (llx + width), upper-right-y (lly + height), rotation angle
第三和第四个参数是第二个点的坐标。矩形位置和大小由(llx, lly)
到(urx, ury)
的对角线确定。
此外,尽管名称和描述有变量,但iTextSharp并未强制第一个点位于左下角,第二个点位于右上角;如果第二个是在右下角或左下角,那么就是它......
因此,由于OP仅更改了前两个参数,因此第二个点保持在(100, 15)
,这通常非常靠近页面底部并且非常接近页面左边界。
他应该尝试类似的事情:
iTextSharp.text.Rectangle rectangle = new Rectangle(510, 510, 600, 515, 0);