@turbomen24

Возможно ли при вставке pdf на сайт, автоматически отображать его страницы как изображения?

Я использую Wordpress в качестве CSM, и задача заключается в следующем: когда я вставляю pdf через редактор страниц, отображать его как набор изображений (в любом формате, например jpg).
Есть ли какой-то способ делать это в автоматическом режиме? То есть, вставил pdf , а в итоге на сайте отображаются изображения, по одному на каждую страницу из PDF.
Любопытно, какие есть средства, чтобы решить эту задачу? Python?
На худой конец, может, существует для WP плагин, умеющий делать это?

---

UPD
Всё оказалось проще. На моём PHP уже установлено расширение Imagick.
Создаю файл через ISP, например convert.php с содержанием:
$imagick = new Imagick();
$imagick->setResolution(300, 300);
$imagick->readImage('test/myfile.pdf');
$imagick->writeImages('test/myfile.png', false);


Такой код преобразует все страницы PDF в изображения, которые доступны в соответствующей директории. Далее можно создавать функции, чтобы при загрузке pdf через форму на сайте, создавались картинки и вставлялись в страницу.
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@turbomen24 Автор вопроса
$imagick = new Imagick();
$imagick->setResolution(300, 300);
$imagick->readImage('test/myfile.pdf');
$imagick->writeImages('test/myfile.png', false);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix
Java Software Engineer
Гуглить не пробовали?) Говорят, иногда помогает...
https://stackoverflow.com/questions/31534746/creat...
function process_pdf( $file ) {

    if( $file['type'] === 'application/pdf' ) {

        // Get the parent post ID, if there is one
        if( isset($_REQUEST['post_id']) ) {
            $post_id = $_REQUEST['post_id'];

            $filename = $file[ 'name' ];
            $filename_wo_extension = basename( $filename, ".pdf" );

            $im = new Imagick();
            $im->setResolution(300, 300);
            $im->readimage( $file[ 'tmp_name' ] ); 
            $pages = $im->getNumberImages();

            $attachments_array = array();

            // iterate over pages of the pdf file
            for($p = 1; $p <= $pages; $p++){
                $im->setIteratorIndex( $p - 1 );
                $im->setImageFormat('jpeg');

                $filename_neu = $filename_wo_extension .'_'. $p .'.jpg';

                // upload new image to wordpress
                // https://codex.wordpress.org/Function_Reference/wp_insert_attachment
                $upload_file = wp_upload_bits($filename_neu, null, $im);
                if (!$upload_file['error']) {

                    $attachment = array(
                        'post_mime_type' => 'image/jpeg',
                        'post_title' => preg_replace( '/\.[^.]+$/', '', $filename_neu),
                        'post_content' => '',
                        'post_status' => 'inherit'
                    );

                    $attachment_id = wp_insert_attachment( $attachment, $upload_file['file'] );

                    if (!is_wp_error( $attachment_id )) {
                        require_once(ABSPATH . "wp-admin" . '/includes/image.php');
                        $attachment_data = wp_generate_attachment_metadata( $attachment_id, $upload_file['file'] );
                        wp_update_attachment_metadata( $attachment_id,  $attachment_data );
                        $attachments_array[] = $attachment_id;
                    }
                }
            }

            // add new images to a gallery (advanced custom fields plugin)
            // http://www.advancedcustomfields.com/resources/update_field/
            update_field( 'field_55b0a473da995', $attachments_array, $post_id );

          $im->destroy();
       }
    }

    return $file;

}

add_filter('wp_handle_upload_prefilter', 'process_pdf' );


https://wordpress.org/plugins/pdf-image-generator/
Гугл, храни тебя!
Ответ написан
@Pavstyuk
Первое что выдает поиск, по моему там можно найти все что нужно и даже больше.
https://wpincode.com/9-luchshix-pdf-plaginov-dlya-...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы