2010-05-03 5 views
23

Le PDF que je peux produire au moment: screenshot http://yart.com.au/junk/itextsharp_problem.jpgComment positionner et envelopper un texte long?

Je veux que le texte pour remplir l'espace en bas à gauche. Comment puis je faire ça? Merci!

Ceci est mon code:

private static void CreatePdf4(string pdfFilename, string heading, string text, string[] photos, string emoticon) 
{ 
    Document document = new Document(PageSize.A4.Rotate(), 26, 36, 0, 0); 
    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(pdfFilename, FileMode.Create)); 
    document.Open(); 

    // Heading 
    Paragraph pHeading = new Paragraph(new Chunk(heading, FontFactory.GetFont(FontFactory.HELVETICA, 54, Font.NORMAL))); 
    document.Add(pHeading); 

    // Photo 1 
    Image img1 = Image.GetInstance(HttpContext.Current.Server.MapPath("/uploads/photos/" + photos[0])); 
    img1.ScaleAbsolute(350, 261); 
    img1.SetAbsolutePosition(46, 220); 
    img1.Alignment = Image.TEXTWRAP; 
    document.Add(img1); 

    // Photo 2 
    Image img2 = Image.GetInstance(HttpContext.Current.Server.MapPath("/uploads/photos/" + photos[1])); 
    img2.ScaleAbsolute(350, 261); 
    img2.SetAbsolutePosition(438, 220); 
    img2.Alignment = Image.TEXTWRAP; 
    document.Add(img2); 

    // Text 

    PdfContentByte cb = writer.DirectContent; 
    cb.BeginText(); 
    cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, false), 18); 
    cb.SetTextMatrix(46, 175); 
    cb.ShowText(text); 
    cb.EndText(); 

    // Photo 3 
    Image img3 = Image.GetInstance(HttpContext.Current.Server.MapPath("/uploads/photos/" + photos[2])); 
    img3.ScaleAbsolute(113, 153); 
    img3.SetAbsolutePosition(556, 38); 
    document.Add(img3); 

    // Emoticon 
    Image imgEmo = Image.GetInstance(HttpContext.Current.Server.MapPath("/Content/images/" + emoticon)); 
    imgEmo.ScaleToFit(80, 80); 
    imgEmo.SetAbsolutePosition(692, 70); 
    document.Add(imgEmo); 

    document.Close(); 
} 

Répondre

36

Résolu

PdfContentByte cb = writer.DirectContent; 
    ColumnText ct = new ColumnText(cb); 
    ct.SetSimpleColumn(new Phrase(new Chunk(text, FontFactory.GetFont(FontFactory.HELVETICA, 18, Font.NORMAL))), 
        46, 190, 530, 36, 25, Element.ALIGN_LEFT | Element.ALIGN_TOP); 
    ct.Go(); 
+1

Exactement ce que Je cherchais :) –

+0

Fonctionne également pour PurePDF dans AS3. – DoubleThink

+2

comment ajuster l'interligne? –

2

Pour Cocoa Dev, oui nous pouvons définir l'espacement des lignes pour le texte en utilisant la propriété SetLeading de PdfPCell comme: PdfPCell.SetLeading(float fixedleading, float multiplied leading);

Questions connexes