使用 iText 库查找更改已安装字体的问题
Finding trouble to change installed font using iText library
所以我尝试使用我安装的名为 "Tengwar Quenya-1 Regular" 的字体,但它没有用,它一直使用默认字体编写 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();
}
它编译得很好,只是不是我选择的字体。如果是字形而不是字符,会不会有问题?
我用谷歌搜索了你提到的字体。我已经下载了它,并且制作了一个小的 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
,则无需注册字体。显然,我的字体路径与你的不同。我认为你的错了。尝试将“.TTF”文件放在其他位置。
所以我尝试使用我安装的名为 "Tengwar Quenya-1 Regular" 的字体,但它没有用,它一直使用默认字体编写 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();
}
它编译得很好,只是不是我选择的字体。如果是字形而不是字符,会不会有问题?
我用谷歌搜索了你提到的字体。我已经下载了它,并且制作了一个小的 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
,则无需注册字体。显然,我的字体路径与你的不同。我认为你的错了。尝试将“.TTF”文件放在其他位置。