gpt4 book ai didi

java - itext 无法解析 bootstrap.css

转载 作者:行者123 更新时间:2023-11-30 08:02:59 25 4
gpt4 key购买 nike

代码:

package test.test1;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.Pipeline;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import com.itextpdf.tool.xml.css.CssFile;
import com.itextpdf.tool.xml.css.StyleAttrCSSResolver;
import com.itextpdf.tool.xml.html.Tags;
import com.itextpdf.tool.xml.pipeline.css.CSSResolver;
import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline;
import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline;
import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext;

public class Table {


File oFile = new File("c:\\test\\1.pdf");
public static Document document = new Document(PageSize.A4, 0, 0, 0, 0);
PdfWriter writer =null;


public static void main(String[] args) throws IOException, DocumentException {


PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("c:\\test\\1.pdf"));
document.open();
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
CSSResolver cssResolver = new StyleAttrCSSResolver();
InputStream cssIS = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("css\\index.css");

CssFile cssfile = XMLWorkerHelper.getCSS(cssIS);
InputStream cssIS1 = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("css\\bootstrap.css");
CssFile cssfile1 = XMLWorkerHelper.getCSS(cssIS1);
cssResolver.addCss(cssfile);
cssResolver.addCss(cssfile1);
Pipeline<?> pipeline =

new CssResolverPipeline(cssResolver,

new HtmlPipeline(htmlContext,

new PdfWriterPipeline(document, writer)));

XMLWorkerHelper.getInstance().parseXHtml(writer, document,new FileInputStream("resources\\index.html"),
new FileInputStream("resources\\css\\bootstrap.css"));
document.close();
System.out.println( "PDF Created!" );
}
}

描述:我正在尝试使用java中的itext库生成html到pdf文件。

输入:index.html、bootstrap.css、index.css

输出:pdf文件

异常(exception):

Exception in thread "main" java.lang.NumberFormatException: For input string: "100%"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Float.parseFloat(Float.java:422)
at com.itextpdf.tool.xml.css.FontSizeTranslator.getFontSize(FontSizeTranslator.java:186)
at com.itextpdf.tool.xml.css.FontSizeTranslator.translateFontSize(FontSizeTranslator.java:165)
at com.itextpdf.tool.xml.html.AbstractTagProcessor.startElement(AbstractTagProcessor.java:120)
at com.itextpdf.tool.xml.pipeline.html.HtmlPipeline.open(HtmlPipeline.java:105)
at com.itextpdf.tool.xml.XMLWorker.startElement(XMLWorker.java:103)
at com.itextpdf.tool.xml.parser.XMLParser.startElement(XMLParser.java:372)
at com.itextpdf.tool.xml.parser.state.TagEncounteredState.process(TagEncounteredState.java:104)
at com.itextpdf.tool.xml.parser.XMLParser.parseWithReader(XMLParser.java:237)
at com.itextpdf.tool.xml.parser.XMLParser.parse(XMLParser.java:215)
at com.itextpdf.tool.xml.parser.XMLParser.parse(XMLParser.java:176)
at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:222)
at com.itextpdf.tool.xml.XMLWorkerHelper.parseXHtml(XMLWorkerHelper.java:226)
at test.test1.Table.main(Table.java:160)

所以我认为这里字体出现问题,请告诉我我到底做了什么?

最佳答案

itext 的 XML Worker 不支持大多数 CSS。

由于 bootstrap 包含非常高级的 CSS,所以这几乎是注定的......

与 bootstrap 相比,您需要编写自己的 CSS 文件,其样式非常有限

编辑:更新了受支持 CSS 的链接: https://wiki.base22.com/btg/itext-5-css-properties-support-when-using-html-to-pdf-features-147327746.html

关于java - itext 无法解析 bootstrap.css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com