2009-05-14 8 views
1

Je travaille avec iTextSharp et .NET 3.5 SP1 (en C#, comme vous pouvez le deviner) et modifier certains fichiers PDF existants en utilisant la classe PdfStamper. Maintenant, j'ai deux problèmes: (Postscript)Problème avec le système de coordonnées et le texte déplacé dans différents fichiers PDF en utilisant iTextSharp

Transformer le système de coordonnées

Comme je le vois, iTextSharp utilise des points comme unité de mesure, mais je voudrais transformer ces coordonnées pour millimètre. Maintenant, comment est le meilleur moyen d'y parvenir?

Jeter un oeil dans la documentation a révélé l'approche suivante:

PdfContentByte cb = new PdfContentByte(); 
System.Drawing.Drawing2D.Matrix scale = new System.Drawing.Drawing2D.Matrix(
    0.352777778, 0, 0.352777778, 0, 0, 0); // 1 point = 0.352777778 mm 
cb.Transform(scale); 

J'espère que je suis la matrice de transformation droite. Mais le problème est: Il n'y a pas Assemblée! Cette assemblée a-t-elle été abandonnée ou qu'est-ce qui lui est arrivé? Que puis-je faire pour transformer les coordonnées de iTextSharp en millimètres. Suis-je sur la mauvaise voie ici?

Texte en PDF se déplace dans un fichier PDF différent en utilisant les mêmes coordonnées

J'ai remarqué que, tout en modifiant deux différents fichiers PDF avec le même contenu, que les mêmes coordonnées se sont déplacées et le texte n'est pas placé exactement aux mêmes positions. Qu'est-ce qui cause cela et comment puis-je l'empêcher?

Ceci est le premier PDF:

alt text http://i41.tinypic.com/20u5tfc.gif

Ceci est le deuxième PDF, créé en utilisant les mêmes coordonnées exactes dans iTextSharp:

alt text http://i44.tinypic.com/2qjzoex.gif

Toute aide est appréciée.

Répondre

1

Mais le problème est: Il n'y a pas System.Drawing.Drawing2D Assembly! Est-ce que a chuté ou que s'est-il passé ? Que puis-je faire pour transformer les coordonnées de iTextSharp à millimètre. Suis-je sur le mauvais chemin ici?

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx (en System.Drawing.dll)

+0

Comment utiliser cette classe? J'ai déjà inséré un "using System.Drawing;" instruction, mais il ne reconnaît toujours pas System.Drawing.Drawing2D.Matrix. Je ne suis pas sûr de ce que signifie "dans System.Drawing.dll". Dois-je inclure cela d'une autre manière? –

+0

Vous devez référencer System.Drawing.Dll. Dans votre projet, recherchez le dossier Références.Faites un clic droit, Ajouter une référence, puis, après cinq minutes, recherchez System.Drawing.Dll dans le premier onglet. Maintenant, rends-moi mes 2 points! – Will

+0

Une fois que vous l'avez référencé, vous pouvez l'utiliser comme dans l'exemple. Ils font des transformations matricielles, ce qui n'est pas exactement la chose la plus facile à apprendre ou à comprendre. Vous aurez à faire quelques lectures vous-même si vous voulez faire plus que le code d'exemple démontre, j'ai peur. – Will

0

accord, je résolu le deuxième problème avec le texte étant déplacé malgré les mêmes coordonnées étant utilisées. Il s'est avéré que le premier PDF contenait un espace de rognage non visible, le second pas. L'espace de recadrage n'est pas visible car l'espace de vue a été recadré en utilisant le créateur PDF, mais comme il semble que l'espace de recadrage était toujours là et compté pour les coordonnées.

Questions connexes