2010-05-03 32 views
23

Tệp PDF tôi có thể sản xuất tại thời điểm này: screenshot http://yart.com.au/junk/itextsharp_problem.jpgCách định vị và bao bọc văn bản dài?

Tôi muốn văn bản lấp đầy không gian ở phía dưới bên trái. Làm thế nào tôi có thể làm điều đó? Cảm ơn!

Đây là mã của tôi:

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(); 
} 

Trả lời

36

Giải Quyết

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

Chính xác những gì Tôi đang tìm kiếm :) –

+0

Hoạt động tương tự cho PurePDF trong AS3. – DoubleThink

+2

làm cách nào để điều chỉnh khoảng cách dòng? –

2

Đối với Cocoa Dev, yeah chúng ta có thể thiết lập khoảng cách dòng cho văn bản sử dụng tài sản SetLeading PdfPCell như: PdfPCell.SetLeading(float fixedleading, float multiplied leading);

Các vấn đề liên quan