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(对于每张幻灯片)?