标签: boxable

PDFBox - 如何将编码从 WinAnsiEncoding 更改为 Unicode?

我正在尝试找到一种可以将WinAnsiEncoding更改为Unicode 的方法,我尝试过像这样设置字体,

PDDocument doc = new PDDocument();
PDPage page = new PDPage(PDRectangle.A4);
doc.addPage(page);

File unicodeFileLocation = new File(getServletContext().getRealPath("/lib/ARIALUNI.TTF"));
PDTrueTypeFont unicodeFont = PDTrueTypeFont.loadTTF(doc, unicodeFileLocation);

...

// Create Table using boxable API
BaseTable table = new BaseTable(yStart, yStartNewPage, bottomMargin, tableWidth, margin, doc, page, true, drawContent);
// Title Field
Row<PDPage> titleRow = table.createRow(rowHeight);
Cell<PDPage> cell = titleRow.createCell(30, "Title");
cell = titleRow.createCell(70, TitleText);
cell.setFont(unicodeFont);

table.draw();
Run Code Online (Sandbox Code Playgroud)

对于简单的文本,这工作正常,我可以看到 Helvetica 的字体变化,但如果文本包含 UTF-8 字符(例如 U+0083 等),我只会看到抛出以下异常,

java.lang.IllegalArgumentException:U+0083在此字体的编码中不可用:WinAnsiEncoding org.apache.pdfbox.pdmodel.font.PDTrueTypeFont.encode(PDTrueTypeFont.java:371) org.apache.pdfbox.pdmodel.font.PDFont。编码(PDFont.java:316)org.apache.pdfbox.pdmodel.font.PDFont.getStringWidth(PDFont.java:345)be.quodlibet.boxable.text.PipelineLayer.push(PipelineLayer.java:65)be.quodlibet。 boxable.Paragraph.getLines(Paragraph.java:341) be.quodlibet.boxable.Paragraph.getHeight(Paragraph.java:465) be.quodlibet.boxable.Cell.getTextHeight(Cell.java:392) be.quodlibet.boxable。 Cell.getCellHeight(Cell.java:367) …

encoding pdfbox boxable

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

boxable ×1

encoding ×1

pdfbox ×1