Comment trouver de l' (X, Y) la position dans iTextSharp?
J'ai besoin de créer un fichier PDF avec plusieurs sections, et après chaque section devez ajouter une ligne, mais je ne sais pas où tracer cette ligne.
J'ai besoin de trouver les coordonnées exactes [x, y] où l'élément suivant dans le document seront écrire.
Comme @Olaf dit, l'utilisation des GetVerticalPosition pour obtenir le Y. Le X est juste du document LeftMargin. Ci-dessous est un travail plein de WinForms application ciblant iTextSharp 5.1.1.0 qui nous l'espérons ne ce que vous cherchez:
using System;
using System.Text;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;
namespace WindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(object sender,EventArgs e){//Test file namestringTestFile=Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),"Test.pdf");//Standard iTextSharp setup
using (FileStream fs =newFileStream(TestFile,FileMode.Create,FileAccess.Write,FileShare.None)){
using (Document doc =newDocument(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(newParagraph("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(newParagraph("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();}}}
Mais si l'on a besoin de rendu de texte simple et, après que mettre une photo ou dessiner une ligne, il peut toujours compter la taille du texte affiché:
var chunk =newChunk(String.Format("Sample text {0}",));
document.Add(newParagraph(t));float curY = writer.GetVerticalPosition(false);float x = document.Left+ chunk.GetWidthPoint();
Comme @Olaf dit, l'utilisation des
GetVerticalPosition
pour obtenir leY
. LeX
est juste du documentLeftMargin
. Ci-dessous est un travail plein de WinForms application ciblant iTextSharp 5.1.1.0 qui nous l'espérons ne ce que vous cherchez:OriginalL'auteur Chris Haas
Je crois qu'il y est seulement la position en y disponible: essayez
OriginalL'auteur Olaf
N'est en fait que la position y de.
Mais si l'on a besoin de rendu de texte simple et, après que mettre une photo ou dessiner une ligne, il peut toujours compter la taille du texte affiché:
OriginalL'auteur Trakhan
Si vous avez juste besoin de dessiner une ligne après la section en cours, peut-être que vous n'avez pas besoin de savoir actuel x et y.
Essayez ceci:
OriginalL'auteur Pmarloz