3

OpenOffice Excel 文件导出到 PDF 正在以编程方式完成,我想知道是否有办法通过在转换过程中传递某种标志或其他东西来解决此问题,这将使 PDF 文档中的单元格背景透明。

请注意示例 PDF 输出。原始 Excel 文件根本不重叠边缘:http ://www.freeimagehosting.net/uploads/4ab8dd9af0.jpg

这是PDF导出前的原始Excel文件: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)
4

1 回答 1

2

您是否可以使包含超大复选框的行更大一些?

这将是一个 hack,而不是你所要求的,但它可能会在比等待修复更短的时间内产生结果。

我检查了 Office 2003 和 OpenOffice 3 中的复选框,发现虽然 Office 允许在对象上使用透明背景,但 OpenOffice 不允许。在 2.4 的发行说明中提到了表单对象的透明背景,但我找不到在复选框上指定它的方法。

据我所见,“普通打印”和打印预览中的透明复选框背景甚至可能是一种黑客攻击,因为似乎没有指示透明背景的属性(背景颜色为默认,而办公室有背景透明)。

然而,积极的是,印刷是可以的。打印到可以定义文件名的基于文件的打印机将是解决方案。也许 Cups 有一个打印到 pdf 文件的打印机?(在这种情况下,您不会使用 PDF 导出而是使用打印)。

于 2009-05-14T15:33:27.657 回答