我有以下HTML:
String css = "@font-face {"
+ "font-family: myFont;"
+ "src: url(fonts/COMICATE.TTF);"
+ "-fs-pdf-font-embed: embed;"
+ "-fs-pdf-font-encoding: Identity-H;"
+ "}"
+ "font-family: myFont;}";
String html = "<html><head>"+css+"</head><body><p>Hello My Font</p></body></html>";
我有以下flyingsaucer
代码将上述HTML
转换为PDF
,并且完美无缺。它会使用我的自定义字体系列COMICATE.TTF
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
String outputFile = "result.pdf";
OutputStream os = new FileOutputStream(outputFile);
renderer.layout();
renderer.createPDF(os);
os.close();
我有以下iText
代码将上面的HTML
置于绝对位置,除@font-face
中的css
外,它的工作正常。
PdfContentByte cb = stamper.getOverContent(1);
ColumnText columnText = new ColumnText(cb);
columnText.setSimpleColumn(800, 800, 100, 100);
ElementList elements = XMLWorkerHelper.parseToElementList(html, ""); // I want to embed flyingsaucer generated html with custom font here
for (Element element : elements) {
columnText.addElement(element);
}
columnText.go();
我有什么方法可以帮助flyingsaucer
进行html转换,然后使用iText
将其放在我现有的PDF中?或者使用iText
?
更新
我可以使用iText使用自定义字体和下面的代码,它可以很好地工作,但我需要使用HTML + CSS。
Font font = FontFactory.getFont("fonts/COMICATE.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.NORMAL, BaseColor.BLACK);
BaseFont baseFont = font.getBaseFont();
PdfContentByte cb = stamper.getOverContent(1);
cb.setFontAndSize(baseFont, 12);
cb.beginText();
cb.showTextAligned(PdfContentByte.ALIGN_LEFT, "Hello My Font", 150, 760, 0);
cb.endText();