gpt4 book ai didi

java - Flying Saucer (xhtmlrenderer) 没有加粗我的字体?

转载 作者:搜寻专家 更新时间:2023-11-01 02:17:45 30 4
gpt4 key购买 nike

我在 Flying Saucer xhtmlrenderer 生成的 pdf 中使用自定义 truetype 字体。

ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont("myfont.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
renderer.setDocument(XMLResource.load(in).getDocument(), url);
renderer.layout();
renderer.createPDF(out);

在呈现的 html 中,我有以下内容(例如)

<html>
<head>
<style type="text/css">
*{font-family:myfont;} /* <-- this works, trust me */
</style>
</head>
<body>
<p>some plain text<b>some bold text</b> <span style="font-weight:bold;">more bold</span></p>
</body>
</html>

但即使是 <b>font-weight:bold我无法将文本设为粗体。

现在,我知道这应该可行,因为我有一个类似的(遗留)项目,它使用相同的字体和普通的旧 itext(即没有 xhtmlrenderer),它确实通过以下方式生成带有粗体文本的 pdf:

myFont = BaseFont.createFont("myfont.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
Font boldFont = new Font(myFont);
boldFont.setStyle(Font.BOLD);

com.lowagie.text.Document document = ...;
document.add(new Paragraph("plain", myFont));
document.add(new Paragraph("bold", boldFont));

谁能解释为什么我不能将粗体与 xhtmlrenderer 一起使用,也许可以解决这个问题?

谢谢,p。

最佳答案

我不是专家,但如果您的字体没有粗体变体,那么 Flying Saucer 可能只是“不加粗”。当您以编程方式使字体变为粗体时,您使用的字体类可能(在幕后)使用某种内部机制自行使字体“更粗”。现实世界中的一个很好的例子是 Photoshop:如果你的字体没有粗体,你就不能把它变成粗体,但是 Photoshop 有一个“模拟粗体”选项,可以进去加粗这些符号并没有真正使用“真正的”粗体字。

确定诊断此问题的一个好方法是切换您在 Flying Saucer 中使用的字体,但保留相同的文档。如果新字体也不是粗体,那么问题就不那么热门了。如果确实变成了粗体,那是因为您的字体没有粗体版本。

希望这对您有所帮助。

关于java - Flying Saucer (xhtmlrenderer) 没有加粗我的字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316810/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com