OpenOffice .xls导出为PDF会导致复选框重叠

问题描述:

OpenOffice将Excel文件导出为PDF是以编程方式完成的,我希望知道是否有办法通过在转换过程中传递某种标志或某种内容来解决此问题这个过程可以使单元背景在PDF文档中透明。OpenOffice .xls导出为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) 
+3

为什么不用OOo提出一个实际的BUG(我知道你已经在他们的论坛上提出过)。 – paxdiablo 2009-01-08 02:55:11

+0

另外,您可以发布代码和/或电子表格吗?我刚注意到这是一个XLS文件(来自Excel)而不是ODS? – paxdiablo 2009-01-08 02:58:16

是否有可能让包含超大复选框的行变大一点?

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

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

就我所见,它甚至可能是“正常打印”和打印预览中的透明复选框背景是黑客,因为似乎没有指示透明背景的属性(背景颜色是Default而办公室则具有透明背景)。

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