这个异常表明 Helvetica-Bold 字体在 WinAnsiEncoding 编码中不包含字符 U+6570('数')。
为了解决这个问题,你可以尝试更换字体,使用支持中文字符的字体。例如,你可以使用支持中文的 TrueType 字体(.ttf)。
以下是修改代码以使用 TrueType 字体的示例:
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType0Font;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelToPdfConverter {
public static void main(String[] args) {
try {
// Load the Excel document
FileInputStream excelFile = new FileInputStream("input.xlsx");
Workbook workbook = new XSSFWorkbook(excelFile);
// Create PDF document
PDDocument pdfDocument = new PDDocument();
PDPage page = new PDPage();
pdfDocument.addPage(page);
// Load a TrueType font with Chinese characters support
PDType0Font font = PDType0Font.load(pdfDocument, new FileInputStream("path/to/your/chinese-font.ttf"));
// Write Excel content to PDF
PDPageContentStream contentStream = new PDPageContentStream(pdfDocument, page);
contentStream.setFont(font, 12);
// Rest of the code remains the same...
contentStream.close();
// Save the PDF document
FileOutputStream pdfFile = new FileOutputStream("output.pdf");
pdfDocument.save(pdfFile);
pdfDocument.close();
excelFile.close();
pdfFile.close();
System.out.println("Excel to PDF conversion successful.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
请替换 "path/to/your/chinese-font.ttf"
为你系统中支持中文字符的 TrueType 字体文件的路径。确保字体文件包含了需要的字符集。此示例中,使用了 PDType0Font
类加载 TrueType 字体。