如何使用 iText 和 htmltopdf 添加对外部样式表的引用
How to add reference to external stylesheet using iText and htmltopdf
我有一个控制台应用程序可以从 HTML 生成 PDF。 HTML 看起来像这样:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="html\somestyle.css" /> </head>
如果我使用 <style>
标签将样式直接包含在 HTML 中,它们就会显示在 PDF 中。但是我需要使用外部样式表。
文件夹结构是这样的:
***Task_ABC (folder)
******Task.exe
******HTML (folder)
*********template.html
*********somestyle.css
控制台应用程序是通过 Windows 任务计划程序安排的。
如果我从命令提示符手动 运行 应用程序,html\sometyle.css
语法有效并且样式显示在 PDF 中。
但是当 Task Scheduler 运行它时,样式不会显示在 PDF 中。
我试过 somestyle.css
和 html/somestyle.css
语法,但它们不起作用。
如果您将 HTML 作为文件流传递给 HtmlConverter
而不是将其作为文件传递,那么资源将根据当前工作目录进行解析。这可能是在另一个环境中处理您的文件时出现问题的原因。
您可以设置 baseUri
,即 HTML 中的所有资源将在 ConverterProperties
中解析的 uri:
HtmlConverter.convertToPdf(fileInputStream, fileOutputStream, new ConverterProperties().setBaseUri(baseUri));
baseUri
应该指向包含您的 html
目录的目录。您也可以自由使用 html/somestyle.css
link 语法,不必使用 Windows 式路径。
我有一个控制台应用程序可以从 HTML 生成 PDF。 HTML 看起来像这样:
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="html\somestyle.css" /> </head>
如果我使用 <style>
标签将样式直接包含在 HTML 中,它们就会显示在 PDF 中。但是我需要使用外部样式表。
文件夹结构是这样的:
***Task_ABC (folder)
******Task.exe
******HTML (folder)
*********template.html
*********somestyle.css
控制台应用程序是通过 Windows 任务计划程序安排的。
如果我从命令提示符手动 运行 应用程序,html\sometyle.css
语法有效并且样式显示在 PDF 中。
但是当 Task Scheduler 运行它时,样式不会显示在 PDF 中。
我试过 somestyle.css
和 html/somestyle.css
语法,但它们不起作用。
如果您将 HTML 作为文件流传递给 HtmlConverter
而不是将其作为文件传递,那么资源将根据当前工作目录进行解析。这可能是在另一个环境中处理您的文件时出现问题的原因。
您可以设置 baseUri
,即 HTML 中的所有资源将在 ConverterProperties
中解析的 uri:
HtmlConverter.convertToPdf(fileInputStream, fileOutputStream, new ConverterProperties().setBaseUri(baseUri));
baseUri
应该指向包含您的 html
目录的目录。您也可以自由使用 html/somestyle.css
link 语法,不必使用 Windows 式路径。