【问题标题】:itext pdf change default font size in Paragraph not workingitext pdf更改段落中的默认字体大小不起作用
【发布时间】:2019-01-22 06:20:15
【问题描述】:

在 android 中使用 itext5 从 XHTML 显示 pdf 时,我试图更改字体大小,但它没有反映。 我想知道 CSS 的替代品(或 hack),因为 itext5 不支持 CSS。

 preparedText = output.toString("UTF-8");

 list = XMLWorkerHelper.parseToElementList(preparedText, null);
//   URL path      =Thread.currentThread().getContextClassLoader().getResource("fontname");
//    FontFactory.register(path.toString(), "test_font");
  Font titleFont = FontFactory.getFont(FontFactory.HELVETICA_BOLD,7f);
  paragraph.setFont(titleFont);
  paragraph.addAll(list);
  publishProgress(88);
            // write to document
            document.open();
            document.newPage();
            Paragraph p= new Paragraph(paragraph);
            p.setFont(titleFont);
            document.add(p);
            document.close();

【问题讨论】:

  • 究竟是什么不工作?
  • 它显示默认字体无法更改,字体未反映在 pdf 中
  • @nikitasoloman 我的回答有帮助吗?如果是,请接受。如果没有,请指出缺少的内容。
  • 不,我们使用了 css 解析器,谢谢

标签: java android pdf itext


【解决方案1】:

您在段落中设置的字体适用于之后添加到该段落的所有文本,它不会更改先前添加的文本。要在构造函数中设置添加到段落的文本的字体,有一个构造函数也接受字体参数。

因此,而不是

Paragraph p= new Paragraph(paragraph);
p.setFont(titleFont);

使用

Paragraph p = new Paragraph(paragraphText, titleFont);

Paragraph p = new Paragraph();
p.setFont(titleFont);
p.add(paragraphText);

【讨论】:

  • 对于任何已经具有样式的元素(如XMLWorkerHelper.parseToElementList 解析的元素),您无法通过设置容器元素的字体(如添加这些元素的段落)来更改字体。相反,您必须遍历各个元素,递归到它们的组成部分,并调整其中的字体。或者更好的是,已经生成了具有所需字体的元素。
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 2012-06-12
  • 1970-01-01
  • 2021-12-19
  • 2011-06-23
  • 1970-01-01
  • 2016-01-02
  • 2018-09-07
相关资源
最近更新 更多