9
votes

Tournez le texte / du texte vertical dans ITEXTSHARP

J'ai besoin de texte vertical ou juste un moyen de faire pivoter un colonnier dans iTextShaarp.

(il doit être une position absolue) p>

jusqu'à présent, j'ai essayé beaucoup de solution différente, mais sans chance. p>

Voici quelques essais: p>

1. p> xxx pré>

2. p>

System.Drawing.Drawing2D.Matrix foo = new System.Drawing.Drawing2D.Matrix();
foo.Rotate(90);
_cb.ConcatCTM(foo);


0 commentaires

3 Réponses :


4
votes

a trouvé la réponse:

Utilisez quelque chose comme ceci: p>

Imports System.Drawing, System.Drawing.Drawing2D
Dim transf as new Matrix
transf.RotateAt(30,New PointF(100,100), MatrixOrder.Append)
writer.DirectContent.Transform(transf)

transf.Invert()
writer.DirectContent.Transform(transf)


2 commentaires

"... et le pivoter". Vous pouvez également appeler directContent.savestate () , transformer et dessiner votre texte, puis appelez directContent.restorestate () . Moins de travail pour l'ordinateur, moins d'octets dans votre contenu, et non soumis à des erreurs de mathématiques à flotteurs qui pourraient devenir plus importantes à mesure que vous transformez les choses et en arrière.


écrivain.directcontent.savestate (); écrivain.directcontent.transf orm (transf); dessinant (); écrivain.direc tcontent.restorestat e ();



6
votes

En fait, le moyen le plus simple est similaire à votre premier essai. Vous devez juste ajouter un appel à BegtinText () et endtext () comme ceci xxx

Voici la documentation pour ShowTextaligne


0 commentaires

13
votes

J'ai essayé beaucoup de méthodes du Web pour ce problème de rotation. Mais aucun d'entre eux n'a travaillé. Enfin, j'ai compris une solution simple. Peut-être que nous pouvons le faire comme ça. Nous pouvons dessiner une table sans frontières et juste avec une cellule. Et nous ajoutons du texte dans la cellule, enfin pivoter la cellule. Tout va bien alors.

        table = new PdfPTable(1);
        table.TotalWidth = 72;
        paragraph = new Paragraph("123");
        cell = new PdfPCell(paragraph);
        cell.Rotation = 270;
        cell.BorderWidth = 0;
        table.AddCell(cell);
        table.WriteSelectedRows(0, -1, 72, 72, writer.DirectContent);


2 commentaires

C'est une très belle réponse et il est même possible d'utiliser l'alignement de la cellule comme "cell.horizontalalignment = pdfcontentbyte.align_center". De plus, la police peut être définie pour le paragraphe comme celui-ci "nouveau paragraphe (" 123 ", )".


J'ai utilisé Cell.rotation = 270 pour faire du texte cellulaire vertical. Merci.