[]
GcExcel Java允许用户配置自定义字体和设置样式,同时以PDF格式保存工作表。
在执行导出操作之前,用户需要制定导出PDF时所使用字体的文件夹路径。当使用Windows系统时,如果未指定字体的文件夹路径,则默认将使用 "C:\Windows\Fonts"。当使用其他操作系统时,则用户必须指定字体文件夹路径,并确保所使用字体正确的存在于字体文件夹路径下。
IWorkbook 接口的 getUsedFonts() 方法可用于获取工作簿中使用的所有字体的集合。
导出为PDF文件时,GcExcel Java使用工作簿。 Workbook.FontsFolderPath 以呈现 PDF。但是,如果使用的字体不存在,它将使用一些备选字体。如果文件中不存在备选字体, GcExcel Java将抛出异常:“没有可用字体。请为工作簿的FontsFolderPath方法设置有效路径!“
关于备选字体,请参考备选字体查找策略。
要在保存为PDF时配置字体和设置样式,请参阅以下示例代码。
// Create a new workbook and add worksheets
Workbook workbook = new Workbook();
IWorksheet sheet1 = workbook.getWorksheets().get(0);
IWorksheet sheet2 = workbook.getWorksheets().add();
// Set style.
sheet1.getRange("A1").setValue("Sheet1");
sheet1.getRange("A1").getFont().setName("Wide Latin");
sheet1.getRange("A1").getFont().setColor(Color.GetRed());
sheet1.getRange("A1").getInterior().setColor(Color.GetGreen());
// Add Table
ITable table = sheet1.getTables().add(sheet1.getRange("C1:E5"), true);
sheet2.getRange("A1").setValue("Sheet2");
// Specify font path
Workbook.FontsFolderPath = "C:\\Users\\GPCTAdmin\\Documents\\Fonts";
// Get the used fonts list in workbook, the list are:"Wide Latin", "Calibri"
List fonts = workbook.getUsedFonts();
// Save to a pdf file
workbook.save("configureFontsAndSetStyle.pdf", SaveFileFormat.Pdf);
// Just export sheet1 to pdf file.
sheet1.save("configureFontsAndSetStyle_sheet.pdf",SaveFileFormat.Pdf);
GcExcel Java还可以使用字体流进行PDF导出,如果用户无法直接将字体存储在磁盘上。 GcExcel提供Workbook类中的FontProvider字段,使用户可以为PDF导出提供字体流。 字体流是使用IFontProvider接口及其方法getFontFilePaths和getFont实现的。
getFontFilePaths方法返回用于自适应、PDF导出和图像导出的所有字体文件路径,而getFont根据字体文件路径返回字体流。 如果用户实现了FontProvider,GcExcel将仅在字体流中搜索字体路径;否则,GcExcel将在FontsFolderPath中搜索。
请参考以下示例代码,了解把字体打入 jar 包时,如何通过流的方式注册字体:
// Create a new workbook.
Workbook workbook = new Workbook();
IWorksheet sheet = workbook.getWorksheets().get(0);
// Set style of the font.
sheet.getRange("A1").setValue("Sheet1");
sheet.getRange("A1").getFont().setName("Arial");
sheet.getRange("A1").getFont().setColor(Color.GetRed());
sheet.getRange("A1").getInterior().setColor(Color.GetGreen());
// Implement FontProvider.
Workbook.FontProvider = new IFontProvider() {
@Override
public List<String> getFontFilePaths() {
return new ArrayList<>(Arrays.asList(
"fonts\\arial.ttf",
"fonts\\arialbd.ttf",
"fonts\\ariali.ttf"
));
}
@Override
public InputStream getFont(String fontFilePath) {
return getClass().getClassLoader().getResourceAsStream(fontFilePath);
}
};
// Save the workbook.
workbook.save("FontStreaming.pdf", SaveFileFormat.Pdf);
请参考以下示例代码,了解如何以流的方式,注册在线字体:
Workbook workbook = new Workbook();
IWorksheet sheet = workbook.getWorksheets().get(0);
//set style.
sheet.getRange("A1").setValue("Sheet1");
sheet.getRange("A1").getFont().setName("GcTestFont");
sheet.getRange("A1").getFont().setColor(Color.GetRed());
//specify font provider.
Workbook.FontProvider = new IFontProvider() {
@Override
public List<String> getFontFilePaths() {
return new ArrayList<>(Arrays.asList(
"Gctestfont-Regular.ttf"
));
}
@Override
public InputStream getFont(String fontFilePath) {
try {
return new URL("https://cdn.grapecity.com.cn/SpreadJS/online/resources/"+fontFilePath).openStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
};
//change the path to real export path when save.
workbook.save("dest.pdf", SaveFileFormat.Pdf);
type=info
注意: GcExcel 也支持通过字体流进行自定义字体的图像导出,代码与上述示例代码相似。
注意: GcExcel Java中的导出为PDF功能不支持将以下工作表样式保存为PDF格式:
a) 使用双下划线、单会计下划线、双会计下划线、上标字体效果、下标字体效果。
b) 对齐首选项,如跨选择居中、填充对齐、对齐对正、分布式对齐、方向和文本读取顺序等。