2016-08-05 15 views
1

Dies ist mein Code:Hinzufügen von Text zu einer PDF-Datei aus einer Textdatei

 using (FileStream msReport = new FileStream(pdfPath, FileMode.Create)) 
     { 
      //step 1 
      using (Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 140f, 10f)) 
      { 
       try 
       { 
        // step 2. 
        StreamReader sr = new StreamReader("TextFile.txt"); 
        string line; 
        PdfWriter pdfWriter = PdfWriter.GetInstance(pdfDoc, msReport); 
        pdfWriter.PageEvent = new ITextEvents(); 

        //open the stream 
        pdfDoc.Open(); 

        for (int i = 0; i < 100; i++) 
        { 
         if ((line = sr.ReadLine()) != null) 
         { 
          Paragraph para = new Paragraph(line, new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 6)); 

          para.Alignment = Element.ALIGN_LEFT; 

          pdfDoc.Add(para); 

          //pdfDoc.NewPage(); 
         } 
        } 
        sr.Close(); 
        pdfDoc.Close(); 

und es funktioniert ... Es liest die Textdatei, die in meinem Computer und fügt sie in PDF ... Die Problem ist - es behält die Formatierung nicht aus der Textdatei. Es fügt nur Text hinzu. Und ich muss es so halten wie es ist. Gibt es eine Möglichkeit, die Formatierung des Textes beizubehalten? Kann ich es irgendwie zu einer Tabelle hinzufügen und die Tabelle oder etwas ähnliches formatieren?

+0

* Formatierung des * Text definieren. Die * Formatierung * von sogenanntem Klartext ist normalerweise künstlich. Sprechen Sie über Tabs? Dann müssen Sie sie durch Leerzeichen ersetzen (weil ein Tab-Zeichen in PDF nichts bedeutet). Sprechen Sie über Räume? Dann müssen Sie eine Mono-Space-Schriftart verwenden. Sprechen Sie über Markup (ähnlich wie bei der Erstellung einer Stack Overflow-Frage)? Dann müssen Sie diese Formatierungssyntax zuerst analysieren (mit einem anderen Werkzeug). –

+0

Ich denke, diese Frage ist ein Duplikat von [Konvertieren TXT-Datei in PDF mit iText (Formatierung beibehalten)] (http://StackOverflow.com/Questions/26925856) und dass die tatsächliche Antwort ist die Antwort, die ich auf die Frage [Wie monospaced font mit iTextSharp setzen?] (http://stackoverflow.com/questions/34495221/how-to-set-monospaced-font-by-using-itextsharp) –

+0

Ich hätte konkreter sein sollen, tut mir leid . Der Text ist wie eine Tabelle formatiert, mit verschiedenen Leerzeichen zwischen ... und es ist in C# geschrieben ... – Anioka

Antwort

0

Sie können es tun, indem Sie Escape-Sequenz zu lesen, wie wenn Zeile ändert, sollten Sie es lesen als \ n und dann schreiben Sie es in PDF mit Ihrem Text.

+0

Es würde mich überraschen, wenn das die Antwort ist. Ich denke, diese Frage ist ein Duplikat von [Konvertieren TXT-Datei in PDF mit iText (Formatierung beibehalten)] (http://StackOverflow.com/Questions/26925856) und dass die tatsächliche Antwort ist die Antwort, die ich auf die Frage [Wie zu geben Set monospaced Schriftart mit Hilfe von iTextSharp?] (http://StackOverflow.com/Questions/34495221/How-to-Set-Monospaced-Font-by-using-itextsharp) –

+0

der Link verwendet wird auch verwendet Escape-Sequenz:/like Ich sagte. –

+0

Äh ... Sie sprechen über Zeilenumbruch Zeichen. Das sind nicht die Probleme. Wenn Sie eine "Zeichenfolge" umbrechen, die Zeilenumbrüche in einem "Absatz" enthält, werden in der resultierenden PDF-Datei Zeilenumbrüche angezeigt. Das Hauptproblem, das Leute normalerweise haben, ist, dass sie eine proportionale Schriftart verwenden (im Falle des OP ist es Helvetica) anstelle einer mono-beabstandeten Schriftart (z. B. Courier). Ihre Antwort spiegelt das in keiner Weise wider. –

2

Versuchen Sie dieses

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using iTextSharp; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 

namespace TxtToPdf 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      //Read the Data from Input File 

      StreamReader rdr = new  StreamReader("Path/Test.txt"); 

      //Create a New instance on Document Class 

      Document doc = new Document(); 

      //Create a New instance of PDFWriter Class for Output File 

      PdfWriter.GetInstance(doc, new FileStream("Path/Test.pdf", FileMode.Create)); 

      //Open the Document 

      doc.Open(); 

      //Add the content of Text File to PDF File 

      doc.Add(new Paragraph(rdr.ReadToEnd())); 

      //Close the Document 

      doc.Close(); 


      //Open the Converted PDF File 

      System.Diagnostics.Process.Start("Path/Test.pdf"); 
     } 
    } 
}