我有一个由我的客户提供的PDF模板文档作为参考。我的应用程序必须创建它。当我比较我的应用程序生成的PDF和客户端给出的模板时,我可以看到外观略有不同。我在Adobe acrobat pro dc中打开它,我仍然可以看到字体属性是相同的。请参阅下面的链接,查看我创建的具有上述问题的PDF标题。
请看图片:
我在xml中定义了字体属性,如下所示。稍后将对此进行解组。
<font name="Arial Narrow" id="blackBold" fsize="12" type="bold" rgb="0,0,0"/>
我在地图中定义了不同的字体类型,如下所示
fontAndAlignmentMap.put("bold", 1);
//Internally this will be resolved to-->com.itextpdf.text.Font.BOLD = 1;
将从unmarshalled xml字体对象创建itext字体,如下所示:
FontFactory.registerDirectories();
com.itextpdf.text.Font itextFont =
FontFactory.getFont(sbcFont.getName(), sbcFont.getFsize(), fontAndAlignmentMap.get(sbcFont.getType()), new BaseColor(r,g,b));
10页的pdf文档具有不同的字体和格式。静态定义的字体被解组并加载到itextFontMap中,如下所示。
itextFontMap.put(sbcFont.getId(), itextFont);
sbcFont.getId()是&#34; blackBold&#34;,&#34; blackRegular&#34;等取决于使用相应的字体将从此地图中拉出。
Phrase pSbc = new Phrase("Summary of Benefits and Coverage:",
SBCMappingSingletonBuilder.itextFontMap.get("blackBold"));`
Phrase pSbcDesc = new Phrase(
" What this Plan Covers & What You Pay For Covered Services",
SBCMappingSingletonBuilder.itextFontMap.get("blackRegular"));
当我打印com.itextpdf.text.Font对象的姓氏时。
blackBold.getFamilyname() :Arial Narrow
blackRegular.getFamilyname() :Arial Narrow
这是从代码中打印出来的。
sbcFont.getName() :Arial Narrow Bold
sbcFont.getName() :Arial Narrow
Phrase
已添加到PdfPCell
;已将PdfPCell
添加到PdfPTable
,然后添加到document
任何人都可以在这里说清楚。我正在使用java 1.6和itextpdf-5.3.4
我所指的样本模板请点击 here
我要创建类似于模板的那个,请点击 here
我在Adobe Acrobat Pro中打开了pdf。粗体字看起来很窄,即使Adobe Acrobat Pro中的字体属性显示为粗体。但是当我在浏览器中打开pdf时,它看起来很不错。