2012-04-13 5 views
6

Haben Stück Code wie unten:Wie rechtfertigen Sie Text mit iTextSharp?

var workStream = new MemoryStream(); 
var doc = new Document(PageSize.LETTER, 10, 10, 42, 35); 
PdfWriter.GetInstance(doc, workStream).CloseStream = false; 
doc.Open(); 

var builder = new StringBuilder(); 
builder.Append("MY LONG HTML TEXT"); 
var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(builder.ToString()), null); 

foreach (var htmlElement in parsedHtmlElements) 
     doc.Add(htmlElement); 

doc.Close(); 

byte[] byteInfo = workStream.ToArray(); 
workStream.Write(byteInfo, 0, byteInfo.Length); 
workStream.Position = 0; 
return new FileStreamResult(workStream, "application/pdf") 

Und hat ein Problem: wie das pdf gerechtfertigt machen? Ist irgendeine Methode oder etwas, die das schnell tun?

+0

Ich bin nicht wirklich klar, was Sie zu tun versuchen. Bitte klären Sie, was "das pdf angepasst" bedeutet. –

+0

Etwas wie CRTL + J in MS Word, Zeilen gleichzeitig auf der linken und rechten Seite der Seite. –

Antwort

10

Ah, ich verstehe, Sie meinen "gerechtfertigt" statt "eingestellt". Ich habe deine Frage aktualisiert. Es ist eigentlich ziemlich einfach. Grundsätzlich hängt es von der Art des Inhalts ab, den Sie hinzufügen, und ob dieser Inhalt dieses Konzept überhaupt unterstützt. Unter der Annahme, dass Sie grundlegende Absätze haben, können Sie die Alignment Eigenschaft auf sie setzen, bevor sie in der Hauptschleife und fügte hinzu:

foreach (var htmlElement in parsedHtmlElements){ 
    //If the current element is a paragraph 
    if (htmlElement is Paragraph){ 
     //Set its alignment 
     ((Paragraph)htmlElement).Alignment = Element.ALIGN_JUSTIFIED; 
    } 
    doc.Add(htmlElement); 
} 

Es gibt zwei Arten von Rechtfertigung, Element.ALIGN_JUSTIFIED und Element.ALIGN_JUSTIFIED_ALL. Die zweite ist die gleiche wie die erste, außer dass sie auch die letzte Textzeile rechtfertigt, die Sie vielleicht machen wollen oder auch nicht.

Verwandte Themen