2011-10-07 210 views

回答

7

我相信只有y位置可供選擇:嘗試

PdfWriter.getVerticalPosition() 
8

像@Olaf說,使用GetVerticalPosition得到YX只是文檔的LeftMargin。下面是一個完整的工作的WinForms應用定位iTextSharp的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);