使用android pdf writer库编码变音符号

时间:2015-02-17 14:53:51

标签: java android pdf encoding character-encoding

我正在使用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()方法中存在问题?

1 个答案:

答案 0 :(得分:1)

您的答案就在您的鼻子前面:您的PDF不使用UTF-8,因此PDF查看器会尝试将您的UTF-8编码文件解码为MacRoman。

要快速解决问题,您可以在一侧使用StandardEncodings.WIN_ANSI_ENCODING,在另一侧使用"WINDOWS-1252""ISO-8859-1"