我正在使用Android PDF Writer,我仍然感到困惑。我的PDF渲染器必须用变音符号('ß','Ä','Ü')写单词,而且它们在pdf中无法正确显示。
我认为问题在于String类中的方法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()方法中存在问题?
答案 0 :(得分:1)
您的答案就在您的鼻子前面:您的PDF不使用UTF-8,因此PDF查看器会尝试将您的UTF-8编码文件解码为MacRoman。
要快速解决问题,您可以在一侧使用StandardEncodings.WIN_ANSI_ENCODING
,在另一侧使用"WINDOWS-1252"
或"ISO-8859-1"
。