Экспорт OpenOffice .xls в PDF приводит к перекрытию флажков - PullRequest
3 голосов
/ 08 января 2009

OpenOffice Экспорт файла Excel в PDF выполняется программно, и я хотел бы знать, есть ли способ решить эту проблему, возможно, пропустив какой-либо флаг или что-то в процессе преобразования, что сделает прозрачный фон ячейки в документе PDF.

Обратите внимание на пример вывода PDF. Исходный файл Excel вообще не перекрывает края: http://www.freeimagehosting.net/uploads/4ab8dd9af0.jpg

Это оригинальный файл Excel перед экспортом в PDF: http://www.freeimagehosting.net/uploads/0cdcaad47a.jpg

Оба OpenOffice 2.4 и 3.0 имеют один и тот же дефект.

Предложения будут приветствоваться, это последнее, что задерживает этот проект.

Перейдите по этой ссылке для примера на веб-сайте OpenOffice: http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=13528

Вот ссылка на трекер: http://www.openoffice.org/issues/show_bug.cgi?id=97856

И некоторый код для вас, это Jython 2.2.1 с Java 2.5.

def _save_as_pdf(self, docSource):
    dirName=os.path.dirname(docSource)
    baseName=os.path.basename(docSource)
    baseName, ext=os.path.splitext(baseName)
    dirTmpPdfConverted=os.path.join(dirName + DIR + PDF_TEMP_CONVERT_DIR)
    if not os.path.exists(dirTmpPdfConverted):
        os.makedirs(dirTmpPdfConverted)
    pdfDest=os.path.join(dirTmpPdfConverted + DIR + baseName + ".pdf")
    url_save=self._create_UNO_File_URL(pdfDest)
    properties=self._create_properties(ext)
    try:
        try:
            self._xstorable=UnoRuntime.queryInterface(XStorable, self._doc)
            self._xstorable.storeToURL(url_save, properties)
        except AttributeError,e:
                self.logger.info("saving as pdf has problem: (" + str(e) + ")")
                raise e
        except:
            self.logger.info("storeToURL exception")
            raise
    finally:
        self.logger.info("converted document " + baseName + ext)
        if not self._doc:
            xCloseable = UnoRuntime.queryInterface(XCloseable, self._doc)
            if not xCloseable:
                try:
                    xCloseable.close(false)
                except CloseVetoException, (ex):
                    xComp = UnoRuntime.queryInterface(XComponent, self._doc)
                    xComp.dispose()
        else:
            xComp = UnoRuntime.queryInterface(XComponent, self._doc)
            xComp.dispose()
        self._doc=None

def _create_properties(self,ext):
    properties=[]
    p=PropertyValue()
    p.Name="Overwrite"
    p.Value=True
    properties.append(p)
    p=PropertyValue()
    p.Name="FilterName"
    if   ext==".doc":
        p.Value='writer_pdf_Export'
    elif ext==".rtf":
        p.Value='writer_pdf_Export'
    elif   ext==".html":
        p.Value='writer_pdf_Export'
    elif ext==".htm":
        p.Value='writer_pdf_Export'
    elif ext==".xls":
        p.Value='calc_pdf_Export'
    elif ext==".tif":
        p.Value='draw_pdf_Export'
    elif ext==".tiff":
        p.Value='draw_pdf_Export'
    properties.append(p)
    return tuple(properties)

1 Ответ

2 голосов
/ 14 мая 2009

Возможно ли сделать строку, содержащую негабаритный флажок, немного больше?

Это будет взлом, а не то, о чем вы просили, но это может дать результаты в более короткие сроки, чем ожидание исправления.

Я установил флажки в Office 2003 и OpenOffice 3 и обнаружил, что, хотя Office допускает прозрачный фон для объектов, OpenOffice этого не делает. В заметках о выпуске 2.4 Transparant фоны упоминаются для объектов формы, но я не смог найти способ указать это на флажок.

Насколько я могу судить, прозрачный фон флажка в "обычной печати" и предварительном просмотре печати - это взлом, поскольку отсутствует свойство, указывающее прозрачный фон (цвет фона по умолчанию офис имеет прозрачный фон).

Что положительно, однако, это то, что печать в порядке. Решением будет печать на файловом принтере, где вы сможете определить имя файла. Возможно, у Кубков есть принтер для печати в PDF-файл? (В этом случае вы будете использовать не экспорт PDF, а печать).

...