2016-07-25 39 views
2

下のコードを使用すると、挿入された矩形はページの左下にあります。 iTextSharp.text.Rectangle矩形を絶対位置に挿入するにはどうすればよいですか?ありがとう。コメントで絶対位置に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

Greyson:あなたの応答をありがとう

彼は代わりのようなものを試してみてください。あなたのコードは一般的に動作します。ただし、ハイパーリンクの長方形は関係なく、私は(int型のx、int型のy、int型の幅、int型の高さ)長方形の引数内のx&yの値を変更する方法を左下生成されたPDFの常にではありません。希望の位置に矩形を挿入する方法をアドバイスしてもらえますか? –

+1

問題を再現できません。私はあなたが何か厄介なことをやっているのを見る。実際のコンテンツに長方形を追加しています: 'overContent.Rectangle(rectangle);' 'と' 'rectangle'を使ってアノテーションを作成しています。あなたはこれをしてはいけません。あなたの注釈を作成し、その境界線を描画する:http://stackoverflow.com/questions/22194844(実際にこの質問はその質問の重複としてマークする必要があります) –

+0

私は、 iTextメーリングリスト。リストにはほとんどトラフィックがないので、おそらく良い考えではありません。ここであなたの質問を編集するのが最善です。 –

答えて

1

OPはint型(ハイパーリンクの長方形は関係なく、私は長方形の引数にX & yの値を変更する方法を左下生成されたPDFの常にではありません

語りますx、int y、int width、int height)です。

ここで間違いが明らかになるので、OPは、Rectangleコンストラクタの3番目と4番目のパラメータを幅と高さにします。これは事実ではない、cf. 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 

3番目と4番目のパラメータは2番目のポイントの座標です。矩形の位置とサイズは、(llx, lly)から(urx, ury)までの対角線によって決定されます。

さらに、変数名と説明にもかかわらず、iTextSharpは、最初の点を左下に、右下を右上に強制しません。 2番目が右下または左下にある場合は...

したがって、OPでは最初の2つのパラメータが変更されているため、2番目の点は通常はページ下部に非常に近く、非常に近い(100, 15)に残ります左のページの境界近くにあります。

iTextSharp.text.Rectangle rectangle = new Rectangle(510, 510, 600, 515, 0); 
関連する問題