2011-10-07 5 views

답변

7

다음 Y를 얻을 수 GetVerticalPosition를 사용

PdfWriter.getVerticalPosition() 
8

처럼 @Olaf 말했다보십시오. X은 문서의 LeftMargin입니다. 다음은 iTextSharp를 대상으로 전체 작업을 WinForms 응용 프로그램이 잘하면 당신이 찾고있는 무엇을한다는 것을 5.1.1.0 :

using System; 
using System.Text; 
using System.Windows.Forms; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using System.IO; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      //Test file name 
      string TestFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf"); 

      //Standard iTextSharp setup 
      using (FileStream fs = new FileStream(TestFile, FileMode.Create, FileAccess.Write, FileShare.None)) 
      { 
       using (Document doc = new Document(PageSize.LETTER)) 
       { 
        using (PdfWriter w = PdfWriter.GetInstance(doc, fs)) 
        { 
         //Open the document for writing 
         doc.Open(); 

         //Will hold our current x,y coordinates; 
         float curY; 
         float curX; 

         //Add a paragraph 
         doc.Add(new Paragraph("It was the best of times")); 

         //Get the current Y value 
         curY = w.GetVerticalPosition(true); 

         //The current X is just the left margin 
         curX = doc.LeftMargin; 

         //Set a color fill 
         w.DirectContent.SetRGBColorStroke(0, 0, 0); 
         //Set the x,y of where to start drawing 
         w.DirectContent.MoveTo(curX, curY); 
         //Draw a line 
         w.DirectContent.LineTo(doc.PageSize.Width - doc.RightMargin, curY); 
         //Fill the line in 
         w.DirectContent.Stroke(); 

         //Add another paragraph 
         doc.Add(new Paragraph("It was the word of times")); 

         //Repeat the above. curX never really changes unless you modify the document's margins 
         curY = w.GetVerticalPosition(true); 

         w.DirectContent.SetRGBColorStroke(0, 0, 0); 
         w.DirectContent.MoveTo(curX, curY); 
         w.DirectContent.LineTo(doc.PageSize.Width - doc.RightMargin, curY); 
         w.DirectContent.Stroke(); 


         //Close the document 
         doc.Close(); 
        } 
       } 
      } 

      this.Close(); 
     } 
    } 
} 
2

실제로 단지의 y 위치에 있습니다.

그러나 하나는 간단한 텍스트를 렌더링 할 필요가 그 사진을 넣어하거나 선을 그 후, 그는 항상 렌더링 된 텍스트의 크기를 계산 할 수있는 경우 : 당신은 그냥 선을 그릴해야하는 경우

var chunk = new Chunk(String.Format("Sample text {0}",));                
document.Add(new Paragraph(t)); 
float curY = writer.GetVerticalPosition(false); 
float x = document.Left + chunk.GetWidthPoint(); 
1

을 현재 섹션 이후에 어쩌면 현재 x와 y를 알 필요가 없습니다. 시험해보기 :

 iTextSharp.text.pdf.draw.DottedLineSeparator sepLINE = new iTextSharp.text.pdf.draw.DottedLineSeparator(); 

     sepLINE.LineWidth = 1; 
     sepLINE.Gap = 2; 
     sepLINE.Percentage = 50; 
     sepLINE.LineColor = new iTextSharp.text.BaseColor(System.Drawing.Color.Blue); 

     Chunk chnkLINE = new Chunk(sepLINE); 
     pdfDoc.Add(chnkLINE); 
관련 문제