使用iText的HTML到PDF,格式化问题

时间:2015-12-06 18:43:25

标签: java itext

我正在使用java中的iText来编写PDF文件。我正在尝试编写一个类似于标题的段落,然后在与

相同的行中的标题之后开始文本

标题:这是一个现在......

标题是粗体,para是正常文本但我无法使用iText执行此操作。我试着用:

Paragraph newPara = new Paragraph();
newPara.add(paranumber);
newPara.add(para);

我还尝试创建一个新段落并将新的段落(标题段和正常文本段)添加到新段落中,但这也没有显示出正确的结果。请看下面的大块。

{{1}}

但这也没有显示正确的格式。

或者,如果有人可以建议我使用其他方式从HTML 创建PDF,那也很好,这样我就可以重写模块来创建所需的PDF。请指教。

1 个答案:

答案 0 :(得分:1)

段落通常使用indentation和增加leading等概念来直观地区分它们。它们是块级元素,而不是内联元素。 在另一段落中添加段落没有意义。添加的段落通常从一个新行开始,无论如何基本上使它成为一个单独的段落。

要获得包含不同字体的段落(例如您的示例),您可以在iText中使用Chunk s。 Chunk基本上是一段带有相关字体的文本。

Font fontbold = new Font(BaseFont.createFont(BaseFont.HELVETICA_BOLD,
    BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12);
Font fontregular = new Font(BaseFont.createFont(BaseFont.HELVETICA,
    BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12);
Chunk header = new Chunk("Heading: ", fontbold);
Chunk content = new Chunk("this is a para now ...", fontregular);
Paragraph paragraph = new Paragraph();
paragraph.add(header);
paragraph.add(content);
document.add(paragraph);

结果如下:

Paragraph

从您的问题和代码示例中不清楚HTML是如何涉及的。我假设您正在以某种方式解析HTML输入并使用iText Element将解析的内容转换为PDF。这是一种有效的方法。或者,您可以查看iText XML Worker,它可以执行XHTML(+ CSS)到PDF转换。