Чистый способ конвертировать электронную таблицу с множеством строк в PDF - PullRequest
1 голос
/ 06 января 2011

Я не ищу библиотеку для конвертирования файлов Excel в pdf, их много.Я ищу чистый способ конвертировать электронную таблицу с большим количеством строк, чем ширина страницы, в PDF.

Можно ли это сделать?Я не рассматриваю возможность уменьшения размера текста в качестве допустимого параметра, поскольку он может достичь верхнего предела (т. Е. Шрифта в 1 пт), и в электронной таблице может быть достаточно столбцов, чтобы фактически достичь этого предела (~ 30).

Моя единственная идея сейчас состоит в том, чтобы сделать страницы в альбомной ориентации, но есть ли способ сделать так, чтобы PDF-файл отображался в виде "двух страниц" с обеими страницами в альбомной ориентации и имел надлежащее упорядочение страниц внизу, чтобы оно выглядело как единая электронная таблица?

Есть еще идеи?или предложения по идее у меня есть?

Ответы [ 3 ]

0 голосов
/ 11 марта 2011

Вы смотрели на JasperReports ?У него довольно сильный движок шаблонов.

Я никогда не использовал JasperReports так, как вы, но их специальность - динамические отчеты, поэтому я думаю, они знают, как хорошо справляться с переполнением страниц.

0 голосов
/ 17 марта 2011

Вот что я в итоге сделал. Он использует функцию QuickLook в MacOS для создания HTML-файла, а затем использует 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'])
0 голосов
/ 06 января 2011

Предполагая, что вы можете прочитать файл Excel (например, с Apache POI ), рассмотрите возможность записи в PDF-файл с помощью Apache FOP , используя определенный вами размер бумаги. Может быть трудно печатать без принтера на рулонной бумаге, но он будет отображаться на экране очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...