我在渲染一個嵌入式的HTML組件,如面臨着我的PDF報告的文本字體大小的問題:字體大小呈現的問題
我的Java代碼:
StringBuilder htmlBody = new StringBuilder("");
htmlBody.append("<p class=\"m\">").append(mainSkillCategory.getName()).append("</p>\n");
for(SubSkillCategory subSkillCat : mainSkillCategory.getSubSkillCategories()){
htmlBody.append("<p class=\"c\">").append(subSkillCat.getName()).append("</p>\n");
for(Skill skill : subSkillCat.getSkills()){
htmlBody.append("<p class=\"s\">").append(skill.getName()).append("</p>\n");
}
}
StringBuilder html = new StringBuilder("");
html.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01//EN\">\n");
html.append("<html>\n");
html.append("<head>\n");
html.append(" <title>Sample of html based report</title>\n");
html.append(" <style type=\"text/css\">\n");
html.append(" p.m {\n");
html.append(" font-size: 12px;\n");
html.append(" font-family: \"Calibri\";\n");
html.append(" padding: 0pt 0pt 0pt 1cm;\n");
html.append(" font-weight: bold;\n");
html.append(" margin: 1pt 0pt 1pt 0pt;\n");
html.append(" }\n");
html.append("\n");
html.append(" p.c {\n");
html.append(" font-size: 12px;\n");
html.append(" font-family: \"Calibri\";\n");
html.append(" padding: 0pt 0pt 0pt 2cm;\n");
html.append(" font-weight: bold;\n");
html.append(" margin: 1pt 0pt 1pt 0pt;\n");
html.append(" }\n");
html.append("\n");
html.append(" p.s {\n");
html.append(" font-size: 12px;\n");
html.append(" font-family: \"Calibri\";\n");
html.append(" font-weight: normal;\n");
html.append(" padding: 0pt 0pt 0pt 3cm;\n");
html.append(" margin: 0pt 0pt 0pt 0pt;\n");
html.append(" }\n");
html.append("\n");
html.append(" </style>\n");
html.append("</head>\n");
html.append("\n");
html.append("<body>\n");
html.append(htmlBody.toString()); html.append("</body>\n");
html.append("</html>");
params.put("htmlCode", html.toString());
.jrxml爲模板:
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Html component" pageWidth="595" pageHeight="842" columnWidth="200" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<style name="backgroundStyle" mode="Opaque" backcolor="green"/>
<parameter name="htmlCode" class="java.lang.String"/>
<title>
<band height="200">
<componentElement>
<reportElement style="backgroundStyle" x="0" y="0" width="550" height="200"/>
<hc:html xmlns:hc="http://jasperreports.sourceforge.net/htmlcomponent" xsi:schemaLocation="http://jasperreports.sourceforge.net/htmlcomponent http://jasperreports.sourceforge.net/xsd/htmlcomponent.xsd" scaleType="RetainShape" horizontalAlign="Left" verticalAlign="Top">
<hc:htmlContentExpression><![CDATA[$P{htmlCode}]]></hc:htmlContentExpression>
</hc:html>
</componentElement>
</band>
</title>
</jasperReport>
,如果我繼續進行JasperExportManager.exportReportToHtmlFile()
到生成報告的輸出是:
但是,如果我有JasperExportManager.exportReportToPdfStream()
繼續,我得到:
這可能是很難說從加盟截圖不同,但似乎這是指定生成的PDF報告的字體大小在CSS類(即p.m,p.c,p.s)大於實際應該達到的值(即12)。
有人在這裏可能以前遇到過這個問題。任何幫助都會受到歡迎。
並非JasperReports支持的html(css)的所有功能 –
@Alex K:再次感謝您的幫助。在這種情況下我應該怎麼做才能克服這個限制? – User00
在這種情況下,您可以根據自己的需要進行設計。我不知道普遍的答案。也許這將是100次嘗試,風格和/或html的微小變化...... –