java 飞碟中的外部CSS

7eumitmz  于 2022-12-21  发布在  Java
关注(0)|答案(6)|浏览(102)

我想知道如何在飞碟中包含外部CSS。在此之前 THB 我检查了StackOverflow中所有可用的链接,但它们没有帮助。这就是为什么我自己做了这个。
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" />

我尝试了所有的方法,包括绝对路径的css内的xhtml也。但css是不适用。请帮助我解决这个问题。

图像1

图像2

红色CSS.css

.fontClass
{
  color : red;
}

测试CSS.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();
}
im9ewurl

im9ewurl1#

考虑到项目的结构,<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();
7y4bm7vi

7y4bm7vi2#

我在我的本地机器上尝试了类似的事情,我尝试了obourgain <link href="css/testRed.css" rel="stylesheet" type="text/css" />的解决方案,这种方式的响应是302,这意味着资源是通过重定向找到的,但get的结果是空的。当我在css之前添加一个/时,一切都很好。<link href="/css/testRed.css" rel="stylesheet" type="text/css" />

uyhoqukh

uyhoqukh3#

我在Spring Boot环境中使用"classpath"关键字。

<link rel="stylesheet" type="text/css" media="all" th:href="@{classpath:templates/style.css}"/>

对我有用。
我希望这对有春靴+百里香叶+飞碟设置的人有帮助。

fslejnso

fslejnso4#

最近我遇到了一个类似的问题:原来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文件。

hgqdbh6s

hgqdbh6s5#

请参考此链接。https://web.archive.org/web/20150905173204/http://today.java.net/pub/a/today/2007/06/26/generating-pdfs-with-flying-saucer-and-itext.html
它提到,当你想要使用一个外部的css文件时,你应该在link标签上有一个media=“print”属性。
链接href=“文件:///C:/用户/约瑟夫. M/工作场所_Struts2/Fly-Sauccer-Web/Web内容/css/RedCSS. css”rel=“样式表”类型=“文本/css”媒体=“打印”

mm5n2pyu

mm5n2pyu6#

对我来说,我只是做了Wolf359所做的事情:
一个lil位的细节,这是我的html模板:

<link th:href="@{classpath:/css/styles.css}" rel="stylesheet" type="text/css" />

在Sping Boot 项目的src/main/resources文件夹下,我有

src/main/resources
|
|── css/
|   |── styles.css
|   |
. . . . .

它的工作原理就像一个魅力!

相关问题