2011-03-15 14 views
23

yeni hat almak için çalışıyorum ama kullanırsanız \ n o \ r \ n (çalışmıyor)PDFsharp Satır Sonu

gfx.DrawString("Project No \n" + textBoxProjNumber.Text, fontUnder, XBrushes.Black, 230, 95); 
gibi dize şey ekleyerek yeni hattı olması herhangi bir şekilde yardımcı olmuyor

çalışmıyor.

+0

Eğer bir çeşit konsol kipi ise DrawString() öğesini iki kez çağırmaktan bahsediyorsunuz? – BlackBear

+0

Üzgünüm Bunu anlamadım mı? –

+2

Yazdırmak istediğiniz her satır için DrawString() öğesini çağırmayı deneyin, örneğin DrawString (Project No "); DrawString (textBoxProj .....); – BlackBear

cevap

27

XTextFormatter sınıfını denediniz mi?

Buraya bakın: http://www.pdfsharp.net/wiki/TextLayout-sample.ashx

Kod pasajı:

vardı tanımlanmış sağ yanal sınırı ve kararlı:

PdfDocument document = new PdfDocument(); 

PdfPage page = document.AddPage(); 
XGraphics gfx = XGraphics.FromPdfPage(page); 
XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold); 
XTextFormatter tf = new XTextFormatter(gfx); 

XRect rect = new XRect(40, 100, 250, 220); 
gfx.DrawRectangle(XBrushes.SeaShell, rect); 
tf.DrawString(text, font, XBrushes.Black, rect, XStringFormats.TopLeft); 
+0

Neden bu dikdörtgene ihtiyacımız var? –

+0

Bu works.Thanks.Onun daha bir şey migradoc bir paragraf bir sayfadan daha uzun ve otomatik olarak sayfa sonu –

+1

ekledim bir şey tespit olduğunu tespit etmek nasıl (Ben biliyorum pdfsharp daha iyi kütüphaneler tarafından değiştirildi) ama VB.net'de kullanmanız gerekir + vbNewLine not/n – ShiftyThomas

0

Bu benim Rect sınıfını kullanarak ilgili olmadığını ne yaptığını Geçerli dizgenin belirlenen sınırlardan daha büyük olup olmayacağı. Öyleyse yazdım. Aksi takdirde buna eklemeye devam ettim.

foreach (string field in temp) 
{ 
    if (field == string.Empty) 
    { 
     continue; 
    } 
    else 
    { 
     tempSB.Clear(); 
     tempSB.Append(sb.ToString()); 
     tempSB.Append(field).Append(", "); //append the incoming value to SB for size testing 

     if (gfx.MeasureString(tempSB.ToString(), defaultFont).Width > 500) //if the incoming string is bigger than the right bounds, write it and clear SB 
     { 
      gfx.DrawString(sb.ToString(), defaultFont, blackBrush, 50, currentLine + defaultSpacing); 
      currentLine += 15; 
      sb.Clear(); 
      sb.Append(" " + field).Append(","); //add the overflow to the beginning of the next line 
     } 
     else 
     { 
      sb.Append(field).Append(", "); //if it is not too big, append it 
     } 
    } 

} 
if (sb.Length > 0 && sb[sb.Length - 1] == ',') sb.Length--; 
gfx.DrawString(sb.ToString(), defaultFont, blackBrush, 50, currentLine + defaultSpacing); //write out whatever has not already been written out 

Biliyorum bu soruya geç kaldım ama umarım birilerine yardımcı olabilir.

+0

XTextFormatter sınıfı gibi benzer yaklaşım, ancak daha az esnek. –