2009-09-02 4 views
3

나는 간단한 테이블을 만들었고 나는 위치를 잡아야한다. 누군가가 itextsharp에있는 테이블 경험이 있습니까?itextsharp : 어떻게 테이블을 배치합니까?

여기 내 코드

Private Sub generate_PDF() 
    Directory.SetCurrentDirectory("C:\Users\alexluvsdanielle\Desktop\") 
    Console.WriteLine("Chapter 6 example 1: Adding a Wmf, Gif, Jpeg and Png-file using urls") 
    Dim document As Document = New Document 
    Try 
     Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("Chap1002.pdf", FileMode.Create)) 


     document.Open() 
     'Dim wmf As Image = Image.GetInstance("harbour.wmf") 
     'Dim gif As Image = Image.GetInstance("vonnegut.gif") 
     Dim jpeg As Image = Image.GetInstance("C:\Users\alexluvsdanielle\Desktop\test.jpg") 
     'Dim png As Image = Image.GetInstance("hitchcock.png") 
     'document.Add(wmf) 
     'document.Add(gif) 
     jpeg.ScalePercent(50) 
     'jpeg.Alignment = Image.TOP_BORDER 
     jpeg.SetAbsolutePosition(0, 562) 
     document.Add(jpeg) 
     'document.Add(png) 
     Dim cb As PdfContentByte = writer.DirectContent 

     cb.BeginText() 
     Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED) 
     cb.SetFontAndSize(bf, 12) 
     'Dim text As String = "Sample text for alignment" 
     'cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, text + " Center", 250, 700, 0) 
     'cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, text + " Right", 250, 650, 0) 
     'cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, text + " Left", 250, 600, 0) 
     cb.SetTextMatrix(150, 652) 
     cb.ShowText(patient_name) 

     cb.SetTextMatrix(150, 637) 
     cb.ShowText(doc_name) 

     cb.SetFontAndSize(bf, 8) 

     cb.SetTextMatrix(150, 620) 
     cb.ShowText(lot__no) 

     cb.SetTextMatrix(150, 611) 
     cb.ShowText(patient_id) 


     Dim i As Integer 
     For i = 1 To 10 
      cb.SetTextMatrix(150, 600 - (i * 10)) 
      cb.ShowText(DataGridView1.Item(3, i).Value) 
     Next 
     cb.EndText() 


     Dim aTable As Table = New Table(2, 2) 

     aTable.Offset = 10 

     aTable.Width = 100 




     aTable.AddCell("0.0") 
     aTable.AddCell("0.1") 
     aTable.AddCell("1.0") 
     aTable.AddCell("1.1") 
     document.Add(aTable) 

     Dim datatable As PdfPTable = New PdfPTable(12) 
     Dim page As Rectangle = document.PageSize 
     datatable.TotalWidth = 100 


     datatable.AddCell("hello") 


     datatable.WriteSelectedRows(0, -1, document.LeftMargin, document.BottomMargin, writer.DirectContent) 
     document.Add(datatable) 

    Catch de As DocumentException 
     Console.Error.WriteLine(de.Message) 
     MessageBox.Show(de.Message) 
    Catch ioe As IOException 
     Console.Error.WriteLine(ioe.Message) 
     MessageBox.Show(ioe.Message) 
    Catch e As Exception 
     Console.Error.WriteLine(e.Message) 
     MessageBox.Show(e.Message) 

    End Try 
    document.Close() 
End Sub 

첫 번째 테이블의 작품입니다하지만 두 번째는하지 않습니다

+0

당신은 무엇을 "작동하지 않음"을 의미합니까? 테이블이 전혀 보이지 않습니까? 잘못된 장소? 정확히 무엇? –

+0

또한 "document.Add (datatable)"을 수행하면 안됩니다. datatable.WriteSelectedRows는 문서에 저장합니다. –

+0

또한 페이지 크기를 명시 적으로 설정해야합니다. 하단 여백이 테이블을 포함하기에 충분하지 않을 수도 있습니다. –

답변

9

당신은 같은 것을 수행 할 수 있습니다

PdfPTable foot = new PdfPTable(2); 
foot.TotalWidth = page.Width - document.LeftMargin - document.RightMargin; 
foot.WriteSelectedRows(0, -1, document.LeftMargin, document.BottomMargin, 
         writer.DirectContent); 
+0

안녕 매튜는 당신의 도움에 너무 감사합니다. 어느 언어로 쓰고 있니? 나는 vb.net을 사용하여 메신저 그리고 이것은 내가 테이블을 선언하는 방법입니다. Dim aTable As Table = 새 테이블 (2, 2) –

+0

C#을 사용하고 있습니다. Table보다는 PdfPTable을 사용하고 있음을 주목하십시오. 나는 그것이 더 나은 포지셔닝을한다고 믿는다; VB에서 Dim aTable으로 선언합니다. PdfPTable = new PdfPTable (2); –

+0

발과 페이지는 무엇입니까? –

1

하는 코드가 문서를 닫을되어 있는지 확인을하고 PdfWriter를 초기화합니다. 나는 (출력 경로는 C#에서 함수에 전달 변수가) 무엇을 사용의

:

Document document = new Document();    
var writer = PdfWriter.GetInstance(document, new FileStream(outputPath, FileMode.Create)); 
document.Open(); 

//write stuff here 

document.Close(); 
+0

예 개폐가 있습니다. 나는 작동하는 일반 테이블을 가지고 있지만,이 하나 doesnt는 작동하는 것 같습니다 –

+0

라마 내가 직접 연락 할 수 있습니다? –

+0

물론, 경고를 받는다 : 나는 iText 전문가가 아니다. 필자는 다른보고 기법의 대안으로 만 사용했습니다. – llamaoo7

관련 문제