我正在使用Android PDF寫入(APW)創建PDF,但它不適用於某些特殊字符(葡萄牙語)。Android PDF Writer(APW)Enconding
mypdf.addText(170, 50, 40,"Coração");
標準enconding是:
mypdf.setFont(StandardFonts.SUBTYPE, StandardFonts.COURIER, StandardFonts.WIN_ANSI_ENCODING);
outputToFile("helloworld.pdf",pdfcontent,"ISO-8859-1");
心中已經試過
outputToFile("helloworld.pdf",pdfcontent,"UTF-8");
outputToFile("helloworld.pdf",pdfcontent,"UTF-16");
outputToFile("helloworld.pdf",pdfcontent,"Cp1252");
,並沒有成功。 任何想法我該怎麼做?
EDIT
方法outputToFile被定義爲:
public void addText(int leftPosition, int topPositionFromBottom, int fontSize, String text, String transformation) {
addContent(
"BT\n" +
transformation + " " + Integer.toString(leftPosition) + " " + Integer.toString(topPositionFromBottom) + " Tm\n" +
"/F" + Integer.toString(mPageFonts.size()) + " " + Integer.toString(fontSize) + " Tf\n" +
"(" + text + ") Tj\n" +
"ET\n"
);
}
此外,我改變字體顏色爲白色加入以下rawcontent:
private void outputToFile(String fileName, String pdfContent, String encoding) {
File newFile = new File(Environment.getExternalStorageDirectory() + "/" + fileName);
try {
newFile.createNewFile();
try {
FileOutputStream pdfFile = new FileOutputStream(newFile);
pdfFile.write(pdfContent.getBytes(encoding));
pdfFile.close();
} catch(FileNotFoundException e) {
//
}
} catch(IOException e) {
//
}
}
作爲該方法addText被定義:
mypdf.addRawContent("1 1 1 rg\n");
然後我回來了黑色字體顏色:
mypdf.addRawContent("0 0 0 rg\n");
'outputToFile'做什麼?有人問道,對APW來源的快速看法似乎表明,在字體和編碼方面它不太靈活。 – mkl
啊,從PDFWriterDemo我假設。首先:因爲字符串包含偏移引用,所以您**不得**使用多字節或可變字節數編碼。實際上,APW在這裏返回一個字符串而不是字節數組是非常荒謬的。 PDF文件不是文字。這就是說,你應該顯示你實際添加特殊字符的代碼,包括你用來創建和選擇字體對象的代碼。 – mkl
好的,但是如何在mypdf.addText(170,50,40,「Cora?o」)行之前設置字體?我問這個問題的原因是,根據你選擇的字體,字符串所需的編碼可能不同,也許你的字符根本不可選!例如。 A(atilde)中內置的編碼可以具有八進制值213,343,或343(MacRomanEncoding,WinAnsiEncoding,PDFDocEncoding的,該PDF [規格]的比照附件d(http://www.adobe.com/content /dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf)),並且您使用的字體必須包含開頭的字符。 – mkl