我正在使用iText 5.4.1 API将HTML转换为PDF,对于英文HTML,GIF,JPG图像在PDF中与HTML一样好,但是当我使用巴西国家HTML时,GIF,JPG图像是很小。请在下面找到代码段。
com.itextpdf.text.Document document = new com.itextpdf.text.Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(pdfFileNameWithPath));
document.open();
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
CSSResolver cssResolver = XMLWorkerHelper.getInstance()
.getDefaultCssResolver(true);
Pipeline<?> pipeline = new CssResolverPipeline(cssResolver,
new HtmlPipeline(htmlContext, new
PdfWriterPipeline(document,
writer)));
XMLWorker worker = new XMLWorker(pipeline, true);
XMLParser p = new XMLParser(worker);
File input = new File(completeHtmlFilePath);
p.parse(new InputStreamReader(new FileInputStream
(input), "UTF-8"));
document.close();
答案 0 :(得分:2)
请看下面的截图:
在左下角,您会看到一些葡萄牙语HTML:
<html>
<body>
<div><b>Brasil</b>, oficialmente República Federativa do Brasil, é o maior país da América do Sul
e da região da América Latina, sendo o quinto maior do mundo em área territorial (equivalente
a 47% do território sul-americano) e população (com mais de 202 milhões de habitantes).
É o único país na América onde se fala majoritariamente a língua portuguesa e o maior país lusófono
do planeta, além de ser uma das nações mais multiculturais e etnicamente diversas,
em decorrência da forte imigração oriunda de variados cantos do mundo.</div>
<img src="resources/images/brasil.png" />
</body>
</html>
此HTML已使用iText 5.5.6和此代码转换为PDF:
public void createPdf(String file) throws IOException, DocumentException {
// step 1
Document document = new Document();
// step 2
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file));
// step 3
document.open();
// step 4
XMLWorkerHelper.getInstance().parseXHtml(writer, document,
new FileInputStream(HTML));
// step 5
document.close();
}
如您所见,葡萄牙语文本以及图像正确呈现。我怀疑这个问题是由于:
也可能存在编码或字体问题,但您所说的图像无法正确呈现。如果编码或字体问题正在发挥作用,我希望您的问题与特殊字符有关。