我正在使用Android内置的PrintedPdfDocument来绘制画布,如this文档的示例代码中所述:
private void drawPage(PdfDocument.Page page) {
Canvas canvas = page.getCanvas();
// units are in points (1/72 of an inch)
int titleBaseLine = 72;
int leftMargin = 54;
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(36);
canvas.drawText("Test Title", leftMargin, titleBaseLine, paint);
paint.setTextSize(11);
canvas.drawText("Test paragraph", leftMargin, titleBaseLine + 25, paint);
paint.setColor(Color.BLUE);
canvas.drawRect(100, 100, 172, 172, paint);
}
是否可以在此文档中添加表情文字?我不知道如何设置字符集/编码。
每当我尝试添加表情符号输出时,它就会在pdf中显示为乱码。
这是保存pdf的代码:
mPdfDocument = new PrintedPdfDocument(context, printAttributes);
mCurrentPage = mPdfDocument.startPage(1);
Canvas canvas = mCurrentPage.getCanvas();
... // add stuff to canvas
mPdfDocument.finishPage(mCurrentPage);
FileOutputStream fos = new FileOutputStream(new File(path));
mPdfDocument.writeTo(fos);
fos.close();
谢谢!
答案 0 :(得分:1)
我得到了答案。这是一些示例代码:
Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/OpenSansEmoji.ttf");
paint.setTypeface(typeface);
您可以找到OpenSansEmoji.ttf字体here或其他表情符号字体。
将此文件放在Android项目中的asset / fonts文件夹中。
答案 1 :(得分:0)
使用表情符号的unicode值创建一个字符串。然后将字符串传递给drawText方法:
String smileyFace = new String(Character.toChars(0x1F603))); //0x1F603 = Smile emoji
canvas.drawText(smileyFace, leftMargin, titleBaseLine, paint);