所以我试图使用我安装的这个名为“Tengwar Quenya-1 Regular”的字体并且它不起作用,它继续使用默认字体编写de PDF文档。所以我尝试使用下载的文件,使用EMBED方法,它仍然打印默认字体,我想知道是否有人曾经尝试过这个,并且可以告诉我我做错了什么。检查代码:
public void testePdf(){
Document document = new Document();
String filename = "C:\\Users\\Marcelo\\Downloads\\tengwar_quenya\\QUENCAP1.TFF";
FontFactory.register(filename);
Font fonte = FontFactory.getFont(filename, BaseFont.CP1252, BaseFont.EMBEDDED);
try {
PdfWriter.getInstance(document,
new FileOutputStream(filename+ "HelloWorld.pdf"));
document.open();
document.add(new Paragraph("A Hello World PDF document.", fonte));
document.close(); // no need to close PDFwriter?
} catch (DocumentException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
它编译得很好,而不是我选择的字体。如果它是一个字形而不是一个字符,它会是一个问题吗?
答案 0 :(得分:0)
我用谷歌搜索你提到的字体。我已经下载了它,我已经制作了一个小型SSCCE,你可以在这里下载:TengwarQuenya1
这是代码:
public static final String FONT = "resources/fonts/QUENCAP1.TTF";
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(DEST));
document.open();
Font f1 = FontFactory.getFont(FONT, BaseFont.WINANSI, BaseFont.EMBEDDED, 12);
document.add(new Paragraph("A Hello World PDF document.", f1));
document.close();
}
结果如下:tengwarquenya1.pdf
我不确定结果文字的含义,但它看起来不像我的默认字体。
换句话说:我无法重现这个问题。请注意,如果将文件路径传递给FontFactory
,则无需注册字体。显然,我的字体路径与您的不同。我认为你的错了。试着把#34; .TTF"在另一个地方提交文件。