我想知道如何将外部CSS包含在Flying-Saucer中。在 THB 之前,我检查了StackOverflow
中的所有可用链接,但它们没有帮助。那&# 39;这就是为什么让这个成为我自己的原因。
TestCSS.xhtml
重命名为TestCSS.html
的版本。因此它们的内容相同。
下面(图1)是Eclipse IDE中我的项目的结构。如果我运行TestCSS.html,它将在浏览器中将页面结果作为图像2给出。
以下代码不能用作外部CSS:
This one Working :
<style>
.redFontClass
{
color : red;
}
.blueFontClass
{
color : blue;
}
</style>
This one NOT Working :
<link href="RedCSS.css" rel="stylesheet" type="text/css" />
This one NOT Working :
<link rel="stylesheet"
href="http://localhost:8888/Fly-Sauccer-Web/css/RedCSS.css" type="text/css" />
This one NOT Working :
<link href="file:///C:/Users/Joseph.M/WorkPlace_Struts2/Fly-Sauccer-Web/WebContent/css/RedCSS.css" rel="stylesheet" type="text/css" />
我尝试了所有方法,包括xhtml内部的css的绝对路径。但css没有得到应用。请帮我解决问题。
图片1
图片2
RedCSS.css
.fontClass
{
color : red;
}
TestCSS.html
<html>
<head>
<link href="file:///C:/Users/Joseph.M/WorkPlace_Struts2/Fly-Sauccer-Web/WebContent/css/RedCSS.css" rel="stylesheet" type="text/css" />
</head>
<body>
<b>This Should come assss <span class = "fontClass" >Red</span> </b>
</body>
</html>
Java代码:
public static void main(String[] args) throws Exception{
// Path of Input File
String inputFile = "C:\\Users\\Joseph.M\\WorkPlace_Struts2\\Fly-Sauccer-Web\\WebContent\\TestCSS.xhtml";
// Path of Output File
String outputFile = "C:\\Users\\Joseph.M\\WorkPlace_Struts2\\Fly-Sauccer-Web\\output.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(FileUtils.readFileToByteArray(new File(inputFile)));
Document doc = builder.parse(is);
is.close();
renderer.setDocument(doc,null);
renderer.layout();
renderer.createPDF(os);
os.close();
}
答案 0 :(得分:0)
鉴于项目的结构,<link href="css/RedCSS.css" rel="stylesheet" type="text/css" />
肯定会有效。
以下是一份工作样本:
文件结构:
文件1:testRed.html
<html>
<head>
<link href="css/testRed.css" rel="stylesheet" type="text/css" />
</head>
<body>
Should be <b class="redFontClass">red</b>
</body>
</html>
文件2:css/testRed.css
.redFontClass {color : red;}
Java代码:
String inputFile = "testRed.html";
String outputFile = "testRed.pdf";
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(FileUtils.readFileToByteArray(new File(inputFile)));
Document doc = builder.parse(is);
is.close();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(os);
os.close();
答案 1 :(得分:0)
我在我的本地机器上尝试过类似的东西,我尝试用obourgain的解决方案
这种方式的响应是302,这意味着找到了重定向的资源,但是这个get的结果是空的。
当我添加一个/之前的CSS时一切正常。
<link href="css/testRed.css" rel="stylesheet" type="text/css" />
<link href="css/testRed.css" rel="stylesheet" type="text/css" />
答案 2 :(得分:0)
最近我遇到了一个类似的问题:事实证明CSS文件采用的是不同的编码。您可能有同样的问题。首先,您需要找出文件的编码:
file -i <my css file>
然后将其转换为UTF-8:
iconv -f <my css file enconding> -t UTF-8 <my css file> > <my css file in utf-8>
就我而言,从UTF-16转换为UTF-8后,已生成PDF文件。
答案 3 :(得分:0)
它提到,当您要使用外部CSS文件时,应该在链接标记上具有media =“ print”属性。
link href =“ file:/// C:/Users/Joseph.M/WorkPlace_Struts2/Fly-Sauccer-Web/WebContent/css/RedCSS.css” rel =“ stylesheet” type =“ text / css”媒体=“打印”
答案 4 :(得分:-1)
我在Spring Boot环境中使用“ classpath”关键字。
<link rel="stylesheet" type="text/css" media="all" th:href="@{classpath:templates/style.css}"/>
为我工作。
我希望这对使用Spring Boot + Thymeleaf + Flying Saucer的人有所帮助。