使用PrintedPdfDocument使用emojis渲染PDF

问题描述 投票:0回答:2

我正在使用Android的内置PrintedPdfDocument来绘制带有Canvas的PDF,如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();

谢谢!

java android pdf emoji
2个回答
1
投票

我得到了答案。以下是一些示例代码:

Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/OpenSansEmoji.ttf");
paint.setTypeface(typeface);

你可以找到OpenSansEmoji.ttf字体here或找到一些其他的表情符号字体。

将此文件放在Android项目的assets / fonts文件夹中。


0
投票

使用表情符号的unicode值创建一个字符串。然后将字符串传递给drawText方法:

String smileyFace = new String(Character.toChars(0x1F603))); //0x1F603 = Smile emoji canvas.drawText(smileyFace, leftMargin, titleBaseLine, paint);

© www.soinside.com 2019 - 2024. All rights reserved.