title: Convert plain text to PDF in Python
body: <p>For my project, I get a plain text file (report.txt) from another program.  It is all formatted in plain text. If you open it in Notepad, it looks nice (as much as a plain text file can). When I open the file in Word and show the paragraphs, I see the ... for spaces and the backwards P for pararaph.</p>
  
  <p>I need to convert this file to PDF and add some other PDF pages to make one final PDF. All this happens in Python.</p>
  
  <p>I am having trouble converting the report.txt to pdf.  I have ReportLab, and am able to read the file and make a few changes (like change the text to Courier), but the spacing gets lost. When the file gets read, it appears to strip any extra spaces. </p>
  
  <p>Questions:
  a) is there an easier way to convert the report.txt to pdf?
  b) If not, is there a way to keep my spaces when I read the file?
  c) Or is there a parameter I'm missing from my paragraph style that will keep the original look?</p>
  
  <p>Here's my code:</p>
  
  <pre><code># ------------------------------------
  # Styles
  # ------------------------------------
  
  styleSheet = getSampleStyleSheet()
  mystyle = ParagraphStyle(name='normal',fontName='Courier',
                           fontSize=10, 
                           alignment=TA_JUSTIFY, 
                           leading=1.2*12,
                           parent=styleSheet['Normal'])       
  
  #=====================================================================================       
  model_report = 'report.txt'
  
  # Create document for writing to pdf  
  doc = SimpleDocTemplate(str(pdfPath),  \
                          rightMargin=40, leftMargin=40, \
                          topMargin=40, bottomMargin=25, \
                          pageSize=A4)
  doc.pagesize = portrait(A4)
  
  # Container for 'Flowable' objects
  elements = []    
  
  # Open the model report
  infile   = file(model_report).read()
  report_paragraphs = infile.split("\n")
  
  for para in report_paragraphs:  
      para1 = '&lt;font face="Courier" &gt;%s&lt;/font&gt;' % para 
      elements.append(Paragraph(para1, style=mystyle))
  doc.build(elements)
  </code></pre>