Текст в pdf-файле имеет загадочные пробелы - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь экспортировать текст в PDF-документ, используя стандартный класс PDFdocument в Android.Код создает PDF-файл, но в тексте, который я пишу в PDF-файл, загадочные пробелы наполовину заключены в слова.

Попытка с использованием параметра canvas.drawText и параметра drawItemn.Оба дают одинаковый результат.Кодовая строка проблемы находится почти внизу примера кода ниже.

PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(mPageWidth, mPageHeight, pageNr).create();
PdfDocument.Page page = doc.startPage(pageInfo);

Memory memory = mMemoryData.get(pageNr);
Canvas canvas = page.getCanvas();

TextPaint paint = new TextPaint();
paint.setColor(Color.BLACK);

//Header
Yposition = drawItem( canvas,
                      paint,
                      18,
                      true,
                      Xposition,
                      Yposition,
                      memory.getTitle() );

//line
Yposition += 14; //Extra offset to get some space between the text and line
paint.setColor( ContextCompat.getColor(this, R.color.default_Accent) );
canvas.drawLine( Xposition, Yposition, pageInfo.getPageWidth() - Xposition, Yposition, paint );

Yposition += 20;
paint.setColor(Color.BLACK);
paint.setTextSize(10);
// **this is the line that gives the problem**
canvas.drawText(memory.getText(),Xposition, Yposition, paint);

doc.finishPage(page);

Результат этого действия:

screen capture of PDF

На первый взгляд это выглядит нормально, но если вы немного увеличите или увеличите масштаб, скопировав / вставив текст в блокнот (или что-то еще), вы получите следующее:

Нет, попробуйте это

Вместо проблемной строки я также попытался это сделать:

drawItem( canvas, paint, 10, false, Xposition, Yposition, memory.getText() );

Это имеет некоторые преимущества, особенно для более крупного текста, но с другой - в том, что оно создает ту же проблему.

У кого-нибудь есть идеи, как это решить?

1 Ответ

1 голос
/ 30 мая 2019

Благодаря совету от Генри проблема теперь решена.Для других, имеющих такую ​​же проблему: я был близок с настройкой шрифта, но «Arial» просто не работает. Это также относится и к «Typeface.SANS_SERIF».Я продолжал получать эти странные пробелы в своем тексте.

Теперь он выглядит так, как показано ниже.

paint.setTypeface(Typeface.create( Typeface.MONOSPACE, Typeface.NORMAL));

Не самая привлекательная текстовая разметка, но она помогаетТеперь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...