我正在使用带有 iText 和 JFreeChart 的 Linux 机器。在嵌入图表后,我注意到 Helvetica 字体(未嵌入)现在出现在 PDF 文件中。这是我正在使用的代码:
import com.itextpdf.text.Font;
// create chart using JFreeChart
final XYPlot plot = jchart.getXYPlot();
final LogAxis xAxis = new LogAxis("x axis");
final NumberAxis yAxis = new NumberAxis("y axis");
...
java.awt.Font cFont = new java.awt.Font("/home/fonts/jigsaw.otf",java.awt.Font.PLAIN,10);
xAxis.setLabelFont(cFont); // set axis label font
...
// add chart to PDF
PdfTemplate chart = canvas.createTemplate(chartWidth, chartHeight);
Graphics2D g2d1 = new PdfGraphics2D(chart, chartWidth, chartHeight);
Rectangle2D r2d1 = new Rectangle2D.Double(0,0,chartWidth,chartHeight);
jchart.draw(g2d1, r2d1);
g2d1.dispose();
canvas.addTemplate(chart,document.left(),100);
在创建的 PDF 中未观察到字体 jigsaw.otf,尽管使用了 10 的字体大小(源自cFont)(并且更改此值确实控制了此处替换的 Helvetica 字体大小)。
我的最终目标是嵌入所有字体。这意味着(1)嵌入 jigsaw.otf 以使 Helvetica 不会显示为未嵌入,或(2)嵌入 Helvetica 并忘记使用 jigsaw.oft。任何一种都可以接受,只要我可以控制 JFreeChart 图表中使用的字体大小。
怎么做(最简单的方法)?
iText book 2nd edition 14.5.2 “Drawing text to PdfGraphics2d”中有一节,但我相信这是向现有图形添加文本,而不是将 JFreeChart 使用的文本嵌入其图表中。如我错了请纠正我。很困惑。希望有人可以提供一个简单的例子,它是如何完成的。