干净的方式来将电子表格与许多行转换为pdf

我不是在寻找一个库来将excel文件转换为PDF格式,有很多可用的。 我正在寻找一个干净的方式来转换一个电子表格比更多的行比页面的宽度成pdf。

这甚至可以完成? 我不认为把文本缩小成为一个有效的选项,因为它可以达到一个上限(即1磅字体),并且电子表格中可能有足够的列实际达到该限制(〜30)。

我现在唯一的想法是使页面风景,但有没有办法让PDF格式显示为两个横向的页面,并有适当的页面sorting在下面看起来像一个凝聚力的电子表格?

任何其他的想法? 或者对我的想法有什么build议?

假设您可以读取Excel文件(例如使用Apache POI ),请考虑使用您定义的自定义纸张大小,使用Apache FOP写入PDF。 没有卷筒纸打印机可能会很难打印,但它会显示在屏幕上很好。

你看过JasperReports吗? 它有一个相当强大的模板引擎。

我从来没有像你那样使用过JasperReports,但是他们的专长是dynamic报告,所以我想他们知道如何以一种很好的方式处理页面溢出。

这是我最终做的。 它使用MacOS上的QuickLookfunction来创buildHTML文件,然后使用wkhtmltopdf将HTML文件转换为PDF。

 #!/usr/bin/python # # convert an excel workbook to a PDF on a Mac # # from subprocess import Popen,call,PIPE import os, os.path, sys import xml.dom.minidom import plistlib if len(sys.argv)==1: print("Usage: %s filename.xls output.pdf" % sys.argv[0]) exit(1) if os.path.exists("xdir"): raise RuntimeError,"xdir must not exists" os.mkdir("xdir") call(['qlmanage','-o','xdir','-p',sys.argv[1]]) # Now we need to find the sheets and sort them. # This is done by reading the property list qldir = sys.argv[1] + ".qlpreview" propfile = open("%s/%s/%s" % ('xdir',qldir,'PreviewProperties.plist')) plist = plistlib.readPlist(propfile) attachments = plist['Attachments'] sheets = [] for k in attachments.keys(): if k.endswith(".html"): basename = os.path.basename(k) fn = attachments[k]['DumpedAttachmentFileName'] print("Found %s -> %s" % (basename,fn)) sheets.append((basename,fn)) sheets.sort() # Use wkhtmltopdf to generate the PDF output os.chdir("%s/%s" % ('xdir',qldir)) cmd = ['wkhtmltopdf']; for (basename,fn) in sheets: cmd.append(fn) cmd.append("../../" + sys.argv[2]) try: call(cmd) except OSError: print("\n\nERROR: %s is not installed\n\n" % (cmd[0])) exit(1) os.chdir("../..") call(['/bin/rm','-rf','xdir'])