使用 android pdf 编写器库对变音符号进行编码
Encoding of umlauts with the android pdf writer lib
我正在使用 Android PDF Writer,但我仍然感到困惑。我的 PDF 渲染器必须用元音符号('ß'、'Ä'、'Ü')书写单词,但它们在 pdf 中显示不正确。
我认为问题出在字符串 class 的方法 getBytes(String encoding)
上。
PDFWriter pdfWriter = new PDFWriter(PaperSize.A4_WIDTH, PaperSize.A4_HEIGHT);
pdfWriter.setFont(StandardFonts.SUBTYPE, StandardFonts.SANS_SERIF, StandardFonts.MAC_ROMAN_ENCODING);
// only write some strings into the pdfwriter
parseData(pdfWriter);
outputToFile(filename, pdfWriter.asString(), "UTF-8");
当我检查 pdfWriter.asString() 时,变音符号存在。
private void outputToFile(String fileName, String pdfContent, String encoding) {
File newFile = new File(fileName);
Log.v(Constants.LOG_TAG, newFile.getAbsolutePath());
try {
newFile.createNewFile();
try {
FileOutputStream pdfFile = new FileOutputStream(newFile);
pdfFile.write(pdfContent.getBytes("UTF8"));
pdfFile.close();
} catch(FileNotFoundException e) {
//
}
} catch(IOException e) {
//
}
}
也许 getBytes() 方法有问题?
答案就在眼前:您的 PDF 不使用 UTF-8,因此 PDF 查看器会尝试将您的 UTF-8 编码文件解码为 MacRoman。
为了快速修复,您可以在一侧使用 StandardEncodings.WIN_ANSI_ENCODING
,在另一侧使用 "WINDOWS-1252"
或 "ISO-8859-1"
。
我正在使用 Android PDF Writer,但我仍然感到困惑。我的 PDF 渲染器必须用元音符号('ß'、'Ä'、'Ü')书写单词,但它们在 pdf 中显示不正确。
我认为问题出在字符串 class 的方法 getBytes(String encoding)
上。
PDFWriter pdfWriter = new PDFWriter(PaperSize.A4_WIDTH, PaperSize.A4_HEIGHT);
pdfWriter.setFont(StandardFonts.SUBTYPE, StandardFonts.SANS_SERIF, StandardFonts.MAC_ROMAN_ENCODING);
// only write some strings into the pdfwriter
parseData(pdfWriter);
outputToFile(filename, pdfWriter.asString(), "UTF-8");
当我检查 pdfWriter.asString() 时,变音符号存在。
private void outputToFile(String fileName, String pdfContent, String encoding) {
File newFile = new File(fileName);
Log.v(Constants.LOG_TAG, newFile.getAbsolutePath());
try {
newFile.createNewFile();
try {
FileOutputStream pdfFile = new FileOutputStream(newFile);
pdfFile.write(pdfContent.getBytes("UTF8"));
pdfFile.close();
} catch(FileNotFoundException e) {
//
}
} catch(IOException e) {
//
}
}
也许 getBytes() 方法有问题?
答案就在眼前:您的 PDF 不使用 UTF-8,因此 PDF 查看器会尝试将您的 UTF-8 编码文件解码为 MacRoman。
为了快速修复,您可以在一侧使用 StandardEncodings.WIN_ANSI_ENCODING
,在另一侧使用 "WINDOWS-1252"
或 "ISO-8859-1"
。