2013-04-12 8 views
5

グラフィックスを含むpdfファイルを作成しましたが、現在これらのグラフィックスの下にテーブルを追加しようとしています。私の問題は、テーブルがグラフィック上にある、どのように私は私のテーブルをPDF文書に配置する場所/位置を指定するのですか?iTextsharpを使ってpdfファイル内のテーブルの位置を指定する方法#

は、私は、ドキュメント上のグラフィックスの位置を指定するには、このラインを使用する。これは私のコード

 docl.Open(); 
     docl.Add(new Paragraph("My first PDF file")); 

     PdfContentByte cb = writer.DirectContent; 
     //employee 
     //    position y,position x,length,height, unknown 
     cb.RoundRectangle( 20f,  745f,  200f, 35f,  10f); 
     //title 
     cb.RoundRectangle(235f, 745f, 35f, 35f, 10f); 
     //identity number 
     cb.RoundRectangle(280f, 745f, 105f, 35f, 10f); 
     //date of birth 
     cb.RoundRectangle(390f, 745f, 105f, 35f, 10f); 
     //employee number 
     cb.RoundRectangle(500f, 745f, 105f, 35f, 10f); 
     //address 
     cb.RoundRectangle(20f, 660f, 200f, 80f, 10f); 
     //pay method 
     cb.RoundRectangle(235f, 700f, 35f, 35f, 10f); 
     //brantch code 
     cb.RoundRectangle(235f, 660f, 35f, 35f, 10f); 
     //bank 
     cb.RoundRectangle(280f, 700f, 215f, 35f, 10f); 
     //account type 
     cb.RoundRectangle(500f, 700f, 105f, 35f, 10f); 
     //account number 
     cb.RoundRectangle(280f, 660f, 160f, 35f, 10f); 
     //pay point 
     cb.RoundRectangle(445f, 660f, 35f, 35f, 10f); 
     //date of payment 
     cb.RoundRectangle(506f, 660f, 90f, 35f, 10f); 
     //marital status 
     cb.RoundRectangle(20f, 600f, 35f, 35f, 10f); 
     //gender 
     cb.RoundRectangle(60f, 600f, 35f, 35f, 10f); 
     //date of appointment 
     cb.RoundRectangle(100f, 600f, 70f, 35f, 10f); 
     //Tax number 
     cb.RoundRectangle(175f, 600f, 70f, 35f, 10f); 
     cb.Stroke(); 

     PdfPTable table = new PdfPTable(2); 
     table.HorizontalAlignment = 0; 
     table.SetTotalWidth(new float[] { 800, 200 }); 
     PdfPCell cell = new PdfPCell(new Phrase("EARNINGS")); 
     cell.Colspan = 2; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Description"); 
     table.AddCell("Amount"); 

です: //位置y、位置x、長さ、高さ、未知の cb.RoundRectangle(20Fを、745f、200f、35f、10f)。

This how my document looks:

私は、グラフィックの下にテーブルを配置します。

答えて

1

低レベルアプローチ(絶対位置でのコンテンツの追加)は、ページコンテンツ用の高レベルアプローチ(document.add()を使用)と混合しています。

テーブルを使用して丸い四角形を作成することで、高度なアプローチに固執してください。セルとテーブルのイベントを使用して角を丸めた罫線を持つテーブルを作成できます。 document.add()を使用すると、iTextはすべての位置付け(ページに収まらない場合はテーブルの分割を含む)を処理します。

絶対的な位置にテーブルを追加することで低レベルのアプローチに固執しますが、ページに収まらない場合はテーブルを分割しないことに注意してください。

この例を見てみましょう:Java | C# | PDF

セルイベントやテーブルイベントを使用してテーブルの丸い枠線を作成する方法を示します。あまり複雑でないサンプルコードについては、chapter 5の他の例を参照してください。

カレンダーの例からわかるように、テーブルは絶対位置に、方法table.WriteSelectedRows(...)を使用して追加されます。四角形の四角形の座標を知っているので、このメソッドを使用してテーブルを絶対位置に追加できます。

0
private static void DemoTableSpacing() { 
    using (FileStream fs = new FileStream("SpacingTest.pdf", FileMode.Create)) { 

     Document doc = new Document(); 
     PdfWriter.GetInstance(doc, fs); 
     doc.Open(); 

     Paragraph paragraphTable1 = new Paragraph(); 
     paragraphTable1.SpacingAfter = 15f; 

     PdfPTable table = new PdfPTable(3); 
     PdfPCell cell = new PdfPCell(new Phrase("This is table 1")); 
     cell.Colspan = 3; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Col 1 Row 1"); 
     table.AddCell("Col 2 Row 1"); 
     table.AddCell("Col 3 Row 1"); 
     //table.AddCell("Col 1 Row 2"); 
     //table.AddCell("Col 2 Row 2"); 
     //table.AddCell("Col 3 Row 2"); 
     paragraphTable1.Add(table); 
     doc.Add(paragraphTable1); 

     Paragraph paragraphTable2 = new Paragraph(); 
     paragraphTable2.SpacingAfter = 10f; 

     table = new PdfPTable(3); 
     cell = new PdfPCell(new Phrase("This is table 2")); 
     cell.Colspan = 3; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Col 1 Row 1"); 
     table.AddCell("Col 2 Row 1"); 
     table.AddCell("Col 3 Row 1"); 
     table.AddCell("Col 1 Row 2"); 
     table.AddCell("Col 2 Row 2"); 
     table.AddCell("Col 3 Row 2"); 
     paragraphTable2.Add(table); 
     doc.Add(paragraphTable2); 
     doc.Close(); 
    } 
} 

私はiTEXTSHARP LINKの私のテーブル位置FOR USE THIS ONEを持っている:あなたはそのCodeProjectの答えとあなたのコードの焦点アイデアは `SpacingAfterと空の段落を追加することであることを強調したい場合がありますhttps://www.codeproject.com/Questions/351802/Its-possible-put-a-table-in-absolute-position-with

+0

を'テーブルを追加する前にスキップする高さと一致する値。 – mkl

+0

あなたの提案をありがとう、実際には私はiTextSharpとasp.netについての初心者です。私はこれで試して、また、私は境界線と空のヘッダーのない最初のテーブルを作った。このようにして、自分のプロジェクトで私の必要条件を得ました。一度コメントをいただきありがとうございます。次回の回答を改善します。 –

関連する問題