У меня есть система БД, встроенная в PHP / MySql. Я довольно новичок в этом. Система позволяет пользователю выставлять счет-фактуру. Другие дают разрешение на оплату счета. Учетный пользователь загружает чек. После того, как проверка загружена, он создает PDF в качестве обложки, затем использует PDFTK (используя PDFTK-PHP-библиотеку Ben Squire), чтобы объединить все файлы вместе и представить пользователю один PDF-файл для загрузки.
Некоторые пользователи загружают PDF-файлы, которые заставляют PDFTK зависать бесконечно, когда он пытается объединить PDF-файл с другими (но большую часть времени он отлично работает). Нет возвращенной ошибки, просто зависает. Чтобы вернуться в систему, пользователь должен очистить кеш и заново войти в систему. Нет сообщений об ошибках, зарегистрированных сервером, он просто зависает. Единственное различие, которое я могу найти в файлах, которые работают или не работают, глядя на них с помощью Acrobat, заключается в том, что плохие файлы имеют размер (8.5 x 14) … но если я создаю свой собственный размер юридического размера и попробую это, он отлично работает.
Использование Putty Я пошел в командную строку и реплицировал ту же проблему, PDFTK не может прочитать файл, он зависает и в командной строке. Я попытался использовать PDFMerge, который использует FPDF для объединения файлов и получения ошибки с этим файлом (ошибка, которую я получаю от этого: FPDF error: Невозможно найти объект (4, 0) в ожидаемом месте ). В командной строке я смог использовать ImageMagick для преобразования PDF в JPG, но он дает мне ошибку: «Предупреждение: файл имеет недопустимую запись xref: 2. Восстановление таблицы xref». и затем он преобразует его в jpg, но дает несколько других менее полезных предупреждений.
Если бы я мог заставить PHP проверять файл PDF, чтобы определить, действительно ли он не висит в системе, я могу использовать ImageMagick для преобразования файла, а затем преобразовать его обратно в PDF, но я не хочу делать это со всеми файлами. Как я могу получить его, чтобы проверить правильность файла при загрузке, чтобы увидеть, нужно ли его преобразовывать, не вызывая зависания системы?
Вот ссылка на файл, который вызывает проблемы: http://www.cssc-testing.org/accounting/school_9/20130604-a1atransportation-1.pdf
Заранее благодарим за любые рекомендации, которые вы можете предложить!
Мой код (который, как я предполагаю, не очень чистый, поскольку я новичок):
$pdftk = new pdftk(); if($create_cover) { $pdftk->setInputFile(array("filename" => $cover_page['server'])); } // Load a list of attachments $sql = "SELECT * FROM actg_attachments WHERE trans_id = {$trans_id}"; $attachments = Attachment::find_by_sql($sql); foreach($attachments as $attachment) { // Check if the file exists from the attachments $attachment->set_variables(); $file = $attachment->abs_path . DS . $attachment->filename; if(file_exists($file)){ // Use the pdftk tool to attach the documents to this PDF $pdftk->setInputFile(array("filename" => $file)); } } $pdftk->setOutputFile($save_file); $pdftk->_renderPdf();
класс $ pdftk, который он вызывает, – от: https://github.com/bensquire/php-pdtfk-toolkit