Java IllegalPdfSyntaxException:不平衡的保存/还原状态运算符

Java IllegalPdfSyntaxException:不平衡的保存/还原状态运算符,java,html,css,itext,Java,Html,Css,Itext,我正在进行iText将带有CSS的HTML转换为PDF 在我的CSS中,我有: background: linear-gradient(to bottom, #fff 0%, #e6e6e6 100%); 在此情况下,它将抛出以下异常: IllegalPdfSyntaxException: Unbalanced save/restore state operators (exception at document.close();) 以下是我编写的代码: Document docum

我正在进行
iText
将带有CSS的HTML转换为PDF

在我的CSS中,我有:

    background: linear-gradient(to bottom, #fff 0%, #e6e6e6 100%);
在此情况下,它将抛出以下异常:

IllegalPdfSyntaxException: Unbalanced save/restore state operators
(exception at document.close();)
以下是我编写的代码:

Document document = null;
try{
 FileOutputStream fileOuputStream = new FileOutputStream("D:\\DEV\\testpdf.html"); 
 fileOuputStream.write(str.getBytes());
 String CSS = "D:\\DEV\\all.css";
 CSSResolver cssResolver = new StyleAttrCSSResolver();

 CssFile cssFile = XMLWorkerHelper.getCSS(new FileInputStream(CSS));
 cssResolver.addCss(cssFile);
 FileInputStream fileInputStream = new FileInputStream("D:\\DEV\\testpdf.html");
    // step 1
   document = new Document();
    // step 2
   PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("pdf.pdf"));
    // step 3
    document.open();
    XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider(XMLWorkerFontProvider.DONTLOOKFORFONTS);
    CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
    HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
    htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
    PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
    HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
    CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
    // XML Worker
    XMLWorker worker = new XMLWorker(css, true);
    XMLParser p = new XMLParser(worker);
    p.parse(fileInputStream);
    // step 4
  //  XMLWorkerHelper.getInstance().parseXHtml(writer, document, fileInputStream);
    //step 5

     fileInputStream.close();
     fileOuputStream.close();
    System.out.println( "PDF Created!" );


}catch(IOException e){
    e.printStackTrace();
    return false;
}
 document.close();
如果我将其从CSS中删除:

background: linear-gradient(to bottom, #fff 0%, #e6e6e6 100%);
然后,我就可以生成PDF而不出现上述异常

iText版本:

        <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itextpdf</artifactId>
        <version>5.4.2</version>
    </dependency>
    <dependency>
        <groupId>com.itextpdf.tool</groupId>
        <artifactId>xmlworker</artifactId>
        <version>5.4.1</version>
    </dependency>

com.itextpdf
itextpdf
5.4.2
com.itextpdf.tool
xmlworker
5.4.1

您使用的是哪个版本的iText?itextpdf-5.4.2 xmlworker-5.4.1您可以尝试使用最新版本。还要确保XML Worker和iText的版本号始终对应。itextpdf-5.5.2 xmlworker-5.5.2在我更改jar版本和注释CSS线性渐变时,没有例外(底部,#fff 0%,#e6e6 100%);当我在上面的CSS代码中使用/取消注释时,仍然存在相同的问题:com.itextpdf.text.exceptions.IllegalPdfSyntaxException:disbalanced save/restore state operators.OK,听起来像个bug。不平衡的保存/还原状态运算符意味着有一个
saveState()
调用而没有
restoreState()
调用(反之亦然)。现在我们已经确定问题发生在最近的iText/XML Worker版本中,我将把它放在正式的待办事项列表中。如果您是客户,机票将得到优先处理。如果没有,您将不得不等到下一个版本。