iText无法识别来自css的列计数属性

时间:2017-10-17 00:58:39

标签: java html css xhtml itext

我尝试从iText解析带有XMLWorker的XHTML页面,但是,XMLWorker无法识别CSS中的属性列数。该代码适用于Chrome,Edge,IE11等浏览器。

我的HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Base Provas</title>
</head> 
<body>
  <center><h3>--------------------------------------------</h3></center>
  <center><h3>AVALIAÇÃO TESTE - PROFª: ------------</h3></center>
  <center><h3>NOME:______________________________________ Nº:____ Série:__________ Data:___/___/____</h3></center>
    <div class="content">
        <p><h5>1.(FUVEST-2014) Observe a figura abaixo, que representa o emparelhamento de duas bases nitrogenadas.</h5></p>

        <center><br /><img src="http://murilopereira.xyz/IMAGES/622-emparelhamento-adenina-timina.png" /><br /></center>

        <h5>Indique a alternativa que relaciona corretamente a(s) molécula(s) que se encontra(m)    parcialmente representada(s) e o tipo de ligação química apontada pela seta<br />
        </h5>
        <h5><table>
            <tr>
                <th></th>
                <th>Molécula(s)</th>
                <th>Tipo de ligação química</th>
            </tr>

            <tr>
                <th>A</th>
                <th>Exclusivamente DNA</th>
                <th>Ligação de hidrogênio</th>
            </tr>

            <tr>
                <th>B</th>
                <th>Exclusivamente RNA</th>
                <th>Ligação covalente apolar</th>
            </tr>

            <tr>
                <th>C</th>
                <th>DNA ou RNA</th>
                <th>Ligação de hidrogênio</th>
            </tr>

            <tr>
                <th>D</th>
                <th>Exclusivamente RNA</th>
                <th>Ligação covalente apolar</th>
            </tr>

            <tr>
                <th>E</th>
                <th>Exclusivamente RNA</th>
                <th>Ligação iônica</th>
            </tr>
    </table>
  </h5>
        <h5>
            A) A<br />  
            B) B<br />          
            C) C<br />
            D) D<br />
            E) E<br />
    </h5>
        <h5>2. (FUVEST-204) Uma das piscinas do Centro de Práticas Esportivas da USP tem o formato de três hexágonos regulares congruentes, justapostos, de modo que cada par de hexágonos tem um lado em comum, conforme representado na figura abaixo. A distância entre lados paralelos de cada hexágono é de 25 metros

    <center><br /><img src="http://murilopereira.xyz/IMAGES/650-piscinas-centro-de-praticas-esportivas-usp.png" /><br /></center>

    Assinale a alternativa que mais se aproxima da área da piscina.</h5>            

        <h5>A) 1.600<br />
        B) 1.800 m²<br />
        C) 2.000 m²<br />
        D) 2.200 m²<br />
        E) 2.400 m²<br /></h5>
        <br />          

        <h5>3. (FUVEST-2014) Cladogramas são diagramas que indicam uma história comum entre espécies ou grupos de seres vivos. Os números 3 e 4 no cladograma apresentado abaixo correspondem, respectivamente, aos seguintes grupos vegetais:</h5>

        <center><br /><img src="http://murilopereira.xyz/IMAGES/452-cladograma-vegetais.png" /><br /></center>

        <br />
    </div>
</body>
</html>

我的CSS代码:

.content {
       column-count: 2;
       column-gap: 15px;
}
table {
       font-family: arial, sans-serif;
       border-collapse: collapse;
       width: 100%;
}

td, th {
       border: 1px solid #dddddd;
       text-align: left;
       padding: 8px;
}

tr:nth-child(even) {
       background-color: #FFFF;
}

那是我的java代码:

private void gerarPDF() {
    try {
        Document document = new Document();
        // step 2
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(targetPdf));

        document.open();
        CSSResolver cssResolver = new StyleAttrCSSResolver();
        CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));
        cssResolver.addCss(cssFile);

        // HTML
        HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
        htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());

        // Pipelines
        PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
        HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
        CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);

        XMLWorker worker = new XMLWorker(css, true);
        XMLParser p = new XMLParser(worker);
        p.parse(new ByteArrayInputStream(htmlToLoad.getBytes()));

        document.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

从浏览器保存的PDF的打印屏幕(Chrome) That image is a printscreen of the PDF saved from browser (Chrome)

从iText生成的

文件 That image is from the file generated from iText

0 个答案:

没有答案