5

グラフィックを含む pdf ファイルを作成しましたが、これらのグラフィックの下にテーブルを追加しようとしています。私の問題は、テーブルがグラフィックスの上にあることです.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");

この行を使用して、ドキュメント上のグラフィックの位置を指定しました。 // position y, position x,length,height, unknown cb.RoundRectangle( 20f, 745f, 200f, 35f, 10f);

これは私の文書がどのように見えるかです:

グラフィックの下にテーブルを配置したい。

4

2 に答える 2

1

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

テーブルを使用して丸い長方形を作成することにより、高レベルのアプローチに固執します。セル イベントとテーブル イベントを使用して、角が丸い境界線を持つテーブルを作成できます。を使用するdocument.add()と、iText がすべての配置を処理します (テーブルがページに収まらない場合のテーブルの分割を含む)。

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

次の例を見てくださいC# | PDF

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

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

于 2013-04-12T12:17:21.037 に答える
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 リンクのテーブル位置にこれを使用しました: https://www.codeproject.com/Questions/351802/Its-possible-put-a-table-in-absolute-position-with

于 2017-09-17T03:40:59.137 に答える