我使用iText5
(Java)来写一个可能包含中国字体的PDF。 所以我用FontSelector
处理字符串并能正常工作。
现在的问题是,如果有2串
String str1 = "Hello Test1";
String str2 = "Hello Test2";
我需要写str1
巫Font Color = Blue
和size = 10
,而str2
与Font Color = Gray
和size = 25
。
我无法弄清楚如何实现这一目标使用FontSelector
。
任何帮助表示赞赏。
这很简单。 这里有一个代码片段,增加了蓝色时代罗马文字和中国文字红:
FontSelector selector = new FontSelector();
Font f1 = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12);
f1.setColor(BaseColor.BLUE);
Font f2 = FontFactory.getFont("MSung-Light",
"UniCNS-UCS2-H", BaseFont.NOT_EMBEDDED);
f2.setColor(BaseColor.RED);
selector.addFont(f1);
selector.addFont(f2);
Phrase ph = selector.process(TEXT);
在你的情况,你需要两个FontSelectors。
FontSelector selector1 = new FontSelector();
Font f1 = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12);
f1.setColor(BaseColor.BLUE);
selector1.addFont(f1);
Phrase ph = selector1.process(str1);//First one
FontSelector selector2 = new FontSelector();
Font f2 = FontFactory.getFont(FontFactory.TIMES_ROMAN, 12);
f2.setColor(BaseColor.GRAY);
selector2.addFont(f2);
Phrase ph = selector2.process(str2);//Second one
你可以在我的情况下,另一种方式,我用14头和10在表格报告的数据做
private Font fHeader;
private Font f1;
BaseFont bf = BaseFont.createFont(Constants.Settings.ARIAL_FONT, BaseFont.IDENTITY_H, true);
f1 = new Font(bf, 10);
fHeader= new Font(bf,14);
PdfPCell cell = new PdfPCell();
//for report header
cell = new PdfPCell(new Phrase(reportKingdomData + "\n" + departmentData + " " + username + " \n " + reportHeader + " \n ", fHeader));
//and for background color
cell .setBackgroundColor(new GrayColor(0.40f));//if 0.10f will be closer to black