Registration is now invite-only. Any user can make an invite, you need to create it here and give resulting link to someone to register.

OpenReadyAlreadyBlockedMergedClosed Pull Request from sgakerru/plasma5-kfilemetadata: rosa2023.1 into import/plasma5-kfilemetadata: rosa2023.1 by sgakerru

Add rtf extractor

avatar

Была реализована поддержка формата RTF как для поиска текста по содержимому, так и для выгрузки метаданных (заголовок, автор, тема).

Реализована поддержка трех видов RTF-документов:
1. Документ сохранен в кодировке Windows-1251, текст закодирован напрямую в виде русских символов.
2. Документ сохранен в UTF-8, текст закодирован через экранирование символов \'?? в кодировке Windows-1251.
3. Документ сохранен в UTF-8, текст закодирован через экранирование символов \u???? в нестандартном представлении кодировки UTF-16 (например, так сохраняет LibreOffice).

Для этого было сделано следующее:
1. Перенесена библиотека rtf-qt из проекта Calligra (входит в KDE) в KFileMetadata.
2. Исправлены все неявные приведения строк ASCII к QString в библиотеке rtf-qt для возможности сборки библиотеки в рамках KFileMetadata, где запрещены неявные преобразования.
3. Библиотека rtf-qt была модифицирована для поддержки экранирования символов в другой кодировке в метаданных (в случае юникодной кодировки \u???? и не-юникодной например windows-1251 (\'??). Без этой модификации в RTF сохраненным в UTF-8 (тип 2 и тип 3, см. выше) вместо метаданных были кракозябры.
4. В библиотеке rtf-qt была добавлена обработка ситуации с тегами \upr и \ud, для того, чтобы считывать именно юникодный \ud вариант, вместо поврежденного текста в Latin1 кодировке. Без этого изменения некоторые теги считывались как кракозябры, например тег заголовка, в документе сохраненном в LibreOffice.
5. В библиотеке rtf-qt была добавлена обработка ситуации с пустыми тегами для количества страниц и слов (например, так сохраняет LibreOffice, не заполняя эти теги). Без этого изменения в этих тегах были некорректные значения количества страниц и слов.
6. Добавлен rtfextractor для KFileMetadata, который умеет получать содержимое документа, а также следующие теги:

 1. Автор.
 2. Тема.
 3. Заголовок.
 4. Описание (комментарий).
 5. Ключевые слова.
 6. Программа, которой был создан документ.
 7. Дата создания.
 8. Количество страниц.
 9. Количество слов.
{{ 'issues.status.' + issueCtrl.status.name | i18n }}
{{ issueCtrl.status.closer.fullname }} {{ issueCtrl.status.closed_at | amDateFormat:'D MMM YYYY, HH:mm' }} ()
{{ issueCtrl.assignee.fullname }} is assignedNo one is assigned
This pull request cannot be automatically merged.
{{pullCtrl.pull.merged_by.uname}} merged at {{ pullCtrl.pull.merged_at | amDateFormat:'ddd, D MMM YYYY, HH:mm' }} ()
{{pullCtrl.pull.closed_by.uname}} closed this pull request at {{ pullCtrl.pull.closed_at | amDateFormat:'ddd, D MMM YYYY, HH:mm' }} ()