PoDoFo польские символы & PdfContentsTokenizer ошибка
1.
Как получить польские символы из PDF-файла? Могу ли я как-то сказать
PdfVariant::getString()
это будет обрабатывать польские символы? Потому что я получаю \200
вместо ł
например, и самое смешное, вот только когда ł
происходит как первый "неосновной" персонаж. Так что, если файл PDF начинается с aaaałęąaaaa
, ł
закодировано как \200
, ę
лайк \201
а также ą
лайк \202
но если pdf файл начинается с aaaaąęłaaaa
, ł
закодировано как \202
, ę
лайк \201
а также ą
лайк \200
Как я могу получить эти символы в любой системе?
2.
Когда я пытаюсь извлечь текст из файла PDF, я делаю что-то вроде этого:
string input_name = "example.pdf";
PdfMemDocument pdf(input_name.c_str());
for (int pn = 0; pn < pdf.GetPageCount(); ++pn) {
PdfPage* page = pdf.GetPage(pn);
PdfContentsTokenizer tok(page);
const char* token = nullptr;
PdfVariant var;
EPdfContentsType type;
while (tok.ReadNext(type, token, var)) {
//etc.
Но у меня проблема с PdfContentsTokenizer tok(page);
Это не работает должным образом. Для некоторых файлов PDF это идет гладко, а для других он бросает Access violation reading location
ошибка в inffas32.asm
файл, 669
линия:
L_get_length_code_mmx:
pand mm4,mm0
movd eax,mm4
movq mm4,mm3
mov eax, [ebx+eax*4]//this is the error line
Кстати, я заметил, что не каждый файл PDF кодируется одинаково. Например, используя podofobrowser я не мог видеть Hello World!
текст из официального примера podofo helloworld. А для остальных pdf файлов podofobrowser показывал текст по-разному или не показывал его вообще.
1 ответ
Объявление 1. Ссылка на файлы патчей, позволяющая извлекать текст из польского pdf с помощью TextExtractor.
Это самая важная строка для извлечения не-Unicode текста из PDF:
PdfString unicode = pCurFont->GetEncoding()->ConvertToUnicode( rString, pCurFont );
Объявление 2. Проблема была в библиотеке zlib, которая была построена неправильно. Я восстановил его, восстановил podofo и проблема исчезла.