猿问

使用 PrintedPdfDocument 渲染带有表情符号的 PDF

我正在使用 Android 的内置PrintedPdfDocument使用 Canvas 绘制 PDF,如本文档示例代码中所述:


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();

谢谢!


森栏
浏览 228回答 2
2回答

qq_遁去的一_1

我得到了答案。下面是一些示例代码:Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/OpenSansEmoji.ttf"); paint.setTypeface(typeface);您可以在此处找到 OpenSansEmoji.ttf 字体或其他一些表情符号字体。将此文件放在 Android 项目中的 assets/fonts 文件夹中。

冉冉说

使用表情符号的 unicode 值创建一个字符串。然后将字符串传递给 drawText 方法:String smileyFace = new String(Character.toChars(0x1F603))); //0x1F603 = Smile emojicanvas.drawText(smileyFace, leftMargin, titleBaseLine, paint);
随时随地看视频慕课网APP

相关分类

Java
我要回答