Рендеринг PDF с смайликами с использованием PrintedPdfDocument - PullRequest
0 голосов
/ 29 августа 2018

Я использую встроенную в Android PrintedPdfDocument для рисования PDF-файлов с помощью Canvas, как описано в коде этого примера документа:

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

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Я получил ответ. Вот пример кода:

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

Вы можете найти шрифт OpenSansEmoji.ttf здесь или найти другой шрифт emoji.

Поместите этот файл в папку assets / fonts в вашем проекте Android.

0 голосов
/ 29 августа 2018

Создайте строку со значением Unicode для эмодзи. Затем передайте строку в метод drawText:

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

...