Модераторы: ginnie, korob2001, JackYF
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с pdf, PDF::API2 выдает ошибку 
:(
    Опции темы
burakov
Дата 24.5.2013, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



Добрый день.

Задача:
удалить последнюю страничку из ПДФ.
написал скрипт. он работает.

Код

        my $import_pdf = PDF::API2 -> open ($file1);
        my $pdf = PDF::API2-> new ();
        my $page_count = $import_pdf->pages ();
        print '$page_count = '.$page_count ."\n";

        my $while_count = 1;
        while ($while_count < $page_count) {
            my $page = $pdf->importpage($import_pdf, $while_count, $while_count);
            print 'pdf_page_N = '. $while_count++ ."\n";
        }

        my $file2 = getcwd ().'/document_new.pdf'; 
        $pdf->saveas ($file2);
        
        $pdf = undef;
        $import_pdf = undef;


но на некоторых PDF запинается (вылетает, останавливает работу), выдавая ошибку.

Код

The PDF file uses a cross-reference stream, which is not yet supported (see Known Issues in the PDF::API2 documentation) at /usr/local/share/perl/5.10.1/PDF/API2/Basic/PDF/File.pm line 1136.


хотелось бы конечно, чтобы он везде обрезал., 
но как сделать хотя бы чтобы не вылетал.?
то есть сначала проверить совместим ли ПДФ с АПИ2 или нет.  


спасибо.




Это сообщение отредактировал(а) burakov - 24.5.2013, 23:01


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
burakov
Дата 25.5.2013, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



пробовал
PDF::Parse 

 $bool = $pdf->IsaPDF;
по идее он должен вернуть 0, если это не PDF (или не валидный).
но он отваливвается точно также как и PDF::API2
на моменте
$pdf->TargetFile($filename)


пишет
Can't read cross-reference section, according to trailer

мне нужно как то придумать, чтобы не валидные (или не те, с которыми модуль не может работать) файлы -- просто пропускало, а не останавливалось


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
burakov
Дата 27.5.2013, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 28.7.2006

Репутация: нет
Всего: нет



для того, чтобы работало 

вспомнил про eval {}

выполняю теперь работу с объектом PDF

eval {
 ...создание объекта...
... работа с объектом...
}

в принципе работает.
то есть к примеру  если PDF не валидный модуль дает ошибку. но скрипт не умирает, и файл пропускается.
а если с PDF Все нормально, то и нормально все отрабатывает.


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Bulat
Дата 5.7.2013, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1636
Регистрация: 22.3.2006
Где: за углом

Репутация: нет
Всего: 57



Я как-то пробовал работать с PDF, уже не посню в чем была проблема, но на некоторых PDF-файлах скрипты тоже падали с ошибкой. В конечном счете использовал библиотеки Java(они все pdf-файлы нормально обрабатывали), обернув их в виде враппера, при помощи Inline::Java. Правда там малость пришлось пошаманить с кодировкой, но это было меньшее из зол. А вот напрямую через перл докопаться до истины так и не удалось.


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW ICQ   Вверх
Google
  Дата 26.5.2019, 02:19 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1186 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.