Чтение PDF, проблемы с персонажами

Я пытаюсь использовать PurePDF для сбора некоторой информации в файле PDF, но не могу заставить PurePDF прочитать ее.

Всякий раз, когда PurePDF пытается прочитать какой-либо pdf, он говорит, что не может найти свой заголовок, я пытался отладить его и заметил, что строка, считанная из bytearray, идет как японские символы! Я пытался изменить порядковый номер байта моего pdf-файла перед передачей его в PurePDF, но ничего не изменил.

Файл PDF в порядке, так как я вижу заголовок "%PDF-" всякий раз, когда открываю его в виде текста, но по какой-то причине ActionScript получает неправильные коды, поэтому PurePDF просто не может работать вообще.

Есть идеи?

Благодарю.


Обновление: я не специалист по bytearray, но я решил управлять им и следить за выполнением кода через отладчик, и обнаружил, что он использует readInt() для получения символов, я просто переписал его для readByte() и теперь он читает PDF! Я еще посмотрю, будут ли работать функции... Может ли кто-нибудь, кто больше занимается программированием низкого уровня, объяснить мне, что может происходить? Я не думаю, что проект не работает в SVN

Это код, который я использовал, я думаю, это довольно просто:

private function loadPdf():void
    {
        var loader:URLLoader=new URLLoader();
        loader.dataFormat=URLLoaderDataFormat.BINARY;
        loader.addEventListener(Event.COMPLETE, onLoadComplete);
        loader.load(new URLRequest(PDF_FILE));
    }

protected function onLoadComplete(event:Event):void
    {
        var data:ByteArray = URLLoader(event.target).data as ByteArray;
        pdfReader = new PdfReader(data);
        pdfReader.readPdf();
    }

1 ответ

Я не работал с PurePDF раньше, но я использовал bytearray для извлечения информации из файлов. Что именно вы хотите получить из этого PDF? Вы хотите извлечь только текст? Также вы можете загрузить ссылку на PDF? Будет легче помочь, если мы посмотрим на то же самое.

О японском тексте... Когда вы читаете PDF в байтовом массиве, не ожидайте, что вы легко найдете читаемый человеком текст, потому что большая часть этих данных предназначена для настройки файловой структуры и т. Д. Фактический текст и картинки из PDF помещаются внутри тегов, называемых Streams. Поэтому обычно вы находите поток текста и извлекаете его в свой байт-массив. Для правильного отображения текста вы затем используете тип декодера (UTF-8, UTF-16 и т. Д.), Как указано в данных PDF.

Эта ссылка ниже объясняет лучше о потоках PDF: ( "/Length" становится длиной вашего байта массива, а "Filter" сообщает вам тип декодирования (тип кодировки, например, ASCII) и т. Д.)

http://blog.didierstevens.com/2008/05/19/pdf-stream-objects/

В любом случае, все это имеет смысл, если вы откроете свой PDF в шестнадцатеричном редакторе. Попробуйте приведенный ниже, если он вам нужен. Теперь вы можете увидеть, где находятся ваши позиции в потоках, и попросить AS3 извлечь их оттуда:

http://www.hhdsoftware.com/free-hex-editor

Если проблема не устранена, загрузите свой PDF-файл куда-нибудь и скажите, что именно вы пытаетесь извлечь из документа. Я постараюсь оказать в этом конкретную помощь (без обещаний, просто пытаюсь помочь).. Мир.

Другие вопросы по тегам