【发布时间】:2020-10-19 23:25:50
【问题描述】:
作为我正在进行的项目的一部分,我需要使用数据库中的内容、位置、文本样式来创建 PDF 文件。我正在使用PdfContentByte 向文档中添加文本。内容、位置和文本大小都可以正常工作,但我无法理解如何合并可能是粗体、斜体和下划线中的一种或多种组合的文本样式。我查看了有关 SOF 的许多其他问题,但无法使其正常工作。
我尝试做的是使用数据库中的文本样式创建一个Font,然后使用Font.getBaseFont() 获取一个BaseFont,如下所示。
Font custFont = FontFactory.getFont("/fonts/arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 0.8f, Font.BOLDITALIC, BaseColor.BLACK);
// "/fonts/arial.ttf", Font.BOLDITALIC, BaseColor.BLACK ETC BASED ON THE FONT STYLE FROM DB
BaseFont baseFont = custFont.getBaseFont();
pdfContentByte.setFontAndSize(baseFont, fontSizeFromDB);
pdfContentByte.showTextAligned(Element.ALIGN_LEFT, "Text From DB", xPosFromDB, yPosFromDB, 0);
这不起作用。只有字体系列被复制到baseFont 对象中。
但是,当我在下面的段落中使用字体时,字体样式可以正常工作。 (但我不能使用它,因为我需要将内容插入到需要使用PdfContentByte 的特定位置)
Font custFontTimes = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD | Font.UNDERLINE);
Paragraph paragraphCusTime = new Paragraph("Paragraph text in custFontTimes", custFontTimes);
document.add(paragraphCusTime);
【问题讨论】: