Проблема с интеграцией PdfParser из Smalot в Wordpress - PullRequest
0 голосов
/ 13 апреля 2020

У меня проблема с интеграцией Smalot Pdf Parser с Wordpress. Я создал плагин, который должен преобразовывать PDF-файл из публикации вакансии (пользовательский тип публикации Wp Job Manager) в текст, чтобы Google мог сканировать его. PDF загружен от пользователя в Front End. Так что я сделал это, и, кажется, работает, пока пользователь не создаст новый список вакансий с PDF. Затем у меня есть следующие ошибки в моем debug.log

[13-Apr-2020 06:53:27 UTC] PHP  20. convert_pdf_to_text() /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-includes/class-wp-hook.php:289
[13-Apr-2020 06:53:27 UTC] PHP  21. Smalot\PdfParser\Parser->parseFile() /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/plugin.php:23
[13-Apr-2020 06:53:27 UTC] PHP  22. file_get_contents() /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/smalot/pdfparser/src/Smalot/PdfParser/Parser.php:70
[13-Apr-2020 06:53:27 UTC] PHP Fatal error:  Uncaught Exception: TCPDF_PARSER ERROR: Empty PDF data. in /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/tecnickcom/tcpdf/tcpdf_parser.php:807
Stack trace:
#0 /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/tecnickcom/tcpdf/tcpdf_parser.php(104): TCPDF_PARSER->Error('Empty PDF data.')
#1 /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/smalot/pdfparser/src/Smalot/PdfParser/Parser.php(93): TCPDF_PARSER->__construct('')
#2 /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/smalot/pdfparser/src/Smalot/PdfParser/Parser.php(81): Smalot\PdfParser\Parser->parseContent(false)
#3 /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/plugin.php(23): Smalot\PdfParser\Parser->parseFile('test.pdf')
#4 /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-includes/class-wp-hook.php(289): convert_pdf_to_text(33433)
#5 /User in /Users/julianlaibach/Local Sites/healthjobs/app/public/wp-content/plugins/pdftotext/vendor/tecnickcom/tcpdf/tcpdf_parser.php on line 807

Мой плагин выглядит следующим образом, и я добавил тестовый файл (test.pdf) в Каталог плагинов, чтобы проверить его следующим образом

<?php

/*
Plugin Name: PDF To Text
*/

include 'vendor/autoload.php';

function convert_pdf_to_text( $post_id ) {

        $post_type = get_post_meta($post_id, '_job_format', true);
        $server_file = get_post_meta($post_id, '_pdf_upload', true);

        if ($post_type == "pdf"){
        // Parse pdf file and build necessary objects.

        $parser = new \Smalot\PdfParser\Parser();
        $pdf    = $parser->parseFile('test.pdf');

        $text = $pdf->getText();

        add_post_meta($post_id, 'pdf_to_text', $text , true);

        }
}

add_action( 'publish_job_listing', 'convert_pdf_to_text', 10, 1 );

?>

...