我尝试从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)
从iText生成的文件