Saving Pandas DataFrame into PDF File format without pdfkit

后端 未结 2 1944
渐次进展
渐次进展 2021-01-06 08:16

I want to save a pandas dataframe into pdf format.

import pdfkit as pdf    
config = pdf.configuration(wkhtmltopdf=\"C:\\Program Files\\wkhtmltopdin\\wkhtmlt         


        
相关标签:
2条回答
  • 2021-01-06 08:36

    Have you considered drawing a Matplotlib Table, then exporting the Table Figure?

    import matplotlib.backends.backend_pdf
    import matplotlib.pyplot as plt
    import pandas as pd
    
    d = {'x{}'.format(i): range(30) for i in range(10)}
    
    table = pd.DataFrame(d)
    
    fig = plt.figure()
    
    ax=fig.add_subplot(111)
    
    cell_text = []
    for row in range(len(table)):
        cell_text.append(table.iloc[row])
    
    ax.table(cellText=cell_text, colLabels=table.columns, loc='center')
    ax.axis('off')
    
    pdf = matplotlib.backends.backend_pdf.PdfPages("output.pdf")
    pdf.savefig(fig)
    pdf.close()
    
    

    I found this was simple, highly customizable and OS-independent (as far as I know). I was able to implement this on a client's server without downloading any additional packages.

    0 讨论(0)
  • 2021-01-06 08:39

    One option is to start with:

    df.to_html()
    

    and then use QT to convert the HTML to PDF as follows:

    from PyQt4.QtGui import QTextDocument, QPrinter, QApplication
    
    import sys
    app = QApplication(sys.argv)
    
    doc = QTextDocument()
    location = "c://apython//Jim//html//notes.html"
    html = open(location).read()
    doc.setHtml(html)
    
    printer = QPrinter()
    printer.setOutputFileName("foo.pdf")
    printer.setOutputFormat(QPrinter.PdfFormat)
    printer.setPageSize(QPrinter.A4)
    printer.setPageMargins(15, 15, 15, 15, QPrinter.Millimeter)
    
    doc.print_(printer)
    print("done!")
    

    I obtained the second bit of code from html to pdf, and tested on Mac OSX with positive results.

    0 讨论(0)
提交回复
热议问题