温馨提示:本文翻译自stackoverflow.com,查看原文请点击:c# - How to add reference to external stylesheet using iText and htmltopdf
c# css itext itext7 pdf-generation

c# - 如何使用iText和htmltopdf添加对外部样式表的引用

发布于 2020-05-10 09:38:35

我有一个控制台应用程序,可以从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 Task Scheduler计划的。

如果我从命令提示符下手动运行该应用程序,则html\\sometyle.css语法有效,样式显示在PDF中。

但是当Task Scheduler运行它时,样式不会显示在PDF中。

我曾尝试somestyle.css以及html/somestyle.css语法和他们不工作。

查看更多

提问者
joym8
被浏览
27
Alexey Subach 2020-02-21 04:38

如果将HTML作为文件流HtmlConverter传递而不是作为文件流传递,则将根据当前工作目录解析资源。这可能是在另一个环境中处理文件时出现问题的原因。

您可以在中设置baseUri,即将解析HTML中所有资源的uri ConverterProperties

HtmlConverter.convertToPdf(fileInputStream, fileOutputStream, new ConverterProperties().setBaseUri(baseUri));

baseUri应指向包含您的目录html目录。您也可以自由使用html/somestyle.css链接语法,而不必使用Windows样式的路径。