2017-02-24 3 views
0

J'imprime une série de chaînes via l'objet d'impression de document dans C# et cela fonctionne correctement. chaque chaîne imprime dans une nouvelle ligne par défaut. mais si une chaîne contient plus de caractères qu'une ligne peut imprimer, les caractères restants sont coupés et n'apparaissent pas sur la ligne suivante. Quelqu'un peut-il me dire comment puis-je fixer le nombre de caractères d'une ligne et imprimer les caractères de dépassement sur la nouvelle ligne?comment corriger la largeur de ligne pour l'impression de document d'impression C#

Merci

Répondre

1

Afin de rendre votre enveloppe de texte à la fin de chaque ligne, vous devez appeler la surcharge DrawString qui prend un objet Rectangle. Le texte sera enveloppé dans ce rectangle:

private void pd_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    //This is a very long string that should wrap when printing 
    var s = new string('a', 2048); 

    //define a rectangle for the text 
    var r = new Rectangle(50, 50, 500, 500); 

    //draw the text into the rectangle. The text will 
    //wrap when it reaches the edge of the rectangle 
    e.Graphics.DrawString(s, Me.Font, Brushes.Black, r); 

    e.HasMorePages = false; 
} 
0

Cela peut ne pas être la meilleure pratique, mais une option est de diviser le tableau, puis l'ajouter dans une chaîne de ligne selon que la chaîne ou non serait encore sous la limite de longueur de ligne. Gardez à l'esprit que vous devez considérer la largeur de la lettre si vous n'utilisez pas un texte monospace.

Exemple:

String sentence = "Hello my name is Bob, and I'm testing the line length in this program."; 
String[] words = sentence.Split(); 

//Assigning first word here to avoid begining with a space. 
String line = words[0]; 

      //Starting at 1, as 0 has already been assigned 
      for (int i = 1; i < words.Length; i++) 
      { 
       //Test for line length here 
       if ((line + words[i]).Length < 10) 
       { 
        line = line + " " + words[i]; 
       } 
       else 
       { 
        Console.WriteLine(line); 
        line = words[i]; 
       } 
      } 

      Console.WriteLine(line);