Libreoffice 在命令行上将 HTML 转换为 PDF 会产生空白页面

Posted

技术标签:

【中文标题】Libreoffice 在命令行上将 HTML 转换为 PDF 会产生空白页面【英文标题】:Libreoffice converting HTML to PDF on command line produces empty page 【发布时间】:2016-04-25 15:53:19 【问题描述】:

当我使用具有以下内容的 html 文档 ('SimplePage.html') 时

<!DOCTYPE html> 
<html>
  <title>Page Title</title>
  <body>
    This is just a simple Hello World
  </body>
</html>

Libreoffice(Windows 7 上的 LibreOffice_5.1.2)生成一个第一页空白的 pdf,然后不写全文 - 而是只显示“一个简单的 Hello World

我正在使用以下命令行

soffice.exe --headless --convert-to pdf SimplePage.html

当我在非无头模式下进行转换时(打开 Libreoffice writer 并使用“导出”生成的 pdf 是正确的。因此我认为这不是使用的 HTML 的问题。 有谁知道这个问题的原因和解决方法吗?

【问题讨论】:

文本显示在哪里?如果它从页面的左边缘开始,那么句子的开头可能是“离页”,即文本的起始坐标由于某种原因是负数(当我们将左边缘视为零坐标时) .您也可以查看 pdf 文件中的实际文本(如果页面的内容流未被过滤,则更容易)。 是的,测试显示在第二页的左上角。看起来文本不在文件中,因为几个 pdf 阅读器找不到字符串的任何部分。我也尝试通过notepad++查看内部,但没有成功。奇怪的是,通过 libre office 的图形界面正确创建了 pdf 【参考方案1】:

你应该试着扭动这个:

soffice.exe --headless --norestore --writer --convert-to pdf YOURFILE

它对我有用,关键是添加--writer option

【讨论】:

为了扩展这个答案,默认情况下 Open/LibreOffice 使用 writer_web_pdf_Export 过滤器将 HTML 转换为 PDF。使用--writer 选项或*writer.exe 二进制文件将默认值更改为writer_pdf_Export,这似乎对许多文档更有效。另一种选择是指定您希望使用的确切过滤器:--convert-to pdf:writer_pdf_Export 以及任何特定于过滤器的选项。【参考方案2】:

我最近遇到了这个问题,即使是使用 writer_pdf_Export,并且发现添加 Content-Security-Policy 元标记似乎可以解决它。我用过...

<meta http-equiv="Content-Security-Policy" content="sandbox">

这似乎也解决了上面的 hello-world 案例......

<!DOCTYPE html> 
<html>
  <head>
      <meta http-equiv="Content-Security-Policy" content="sandbox">
      <title>Page Title</title>
  </head>
  <body>
      This is just a simple Hello World
  </body>
</html>

(使用当前的 LibreOffice 7.0.4.2 检查)

【讨论】:

以上是关于Libreoffice 在命令行上将 HTML 转换为 PDF 会产生空白页面的主要内容,如果未能解决你的问题,请参考以下文章

Libreoffice .xls 到 .pdf 的转换在 Ubuntu 18.04 上将单页内容分成多页

如何在 Linux 上将 pptx 文件转换为 jpg 或 png(对于每张幻灯片)?

如何在 Android 上将 MS Office DOC/XLS/PPT 和 PDF 转换为图像

怎么在Linux命令行下转换doc文件到pdf格式

使用命令行中的值填充现有 LibreOffice 文档

libreoffice 在带有表格边缘的命令行中将 xlsx 转换为 pdf