Este plugin não foi testado com as 3 últimas grandes versões do WordPress. Pode já não ser suportado e pode ter problemas de compatibilidade quando usado com versões mais recentes do WordPress.

PDF Image Generator

Descrição

Ao carregar um anexo PDF, este plugin converte a primeira página num jpeg e anexa-o como uma miniatura no artigo. Também permite mostrar um ícone da miniatura e inserir uma ligação ao PDF com uma miniatura no editor.

Disponível apenas para WordPress v.4.0 ou superior. IMPORTANTE: Tem que instalar ImageMagick e/ou GhostScript no servidor.

Este plugin liga-se ao editor de multimédia e cria uma miniatura da capa (página frontal) do PDF usando ImageMagick com GhostScript. Não necessita de configurações. Basta ativar o plugin no painel de instalação. Permite definir ficheiros PDF como ‘imagens’.

Como funciona.

Este plugin substitui e alarga as seguintes funcionalidades:

  • Cria automaticamente uma miniatura de um PDF usando o ImageMagick. A imagem criada dispõe de diferentes tamanhos e é anexada ao PDF.
  • Regista a miniatura criada como imagem de destaque (post-thumbnail) do PDF.
  • Mostra a miniatura como ícone em vez de ícone mime-type na página de administração.
  • Esconder o ficheiro da miniatura na biblioteca multimédia. (v1.2 ou posterior)
  • Substituir o texto da ligação com JPG sempre que inserir PDF ao editor de texto.
  • Eliminar miniaturas sempre que eliminar ficheiros PDF na biblioteca de multimédia.
  • Permite gerir e colocar miniaturas e ficheiros PDF manualmente no template . (consultar ‘Outras notas’.)
  • Permite definir o PDF como imagem de destaque e usar as funções da mesma forma como um ficheiro de imagem. (v1.2 ou posterior, ver ‘Outras notas’.)
  • Permite controlar o tamanho máximo das miniaturas criadas bem como outras definições predefinidas na página do plugin. (v1.3.4 ou posterior)

Elementos que são criados.

O ficheiro de miniatura criado é registado como sub-artigo de um ficheiro PDF e dispõe de vários tamanhos. Os ficheiros criados constituem uma árvore tal como o exemplo abaixo:

  • ficheiro.pdf (O seu ficheiro PDF)
    • filcheiro-pdf.jpg (Miniatura criada a partir do seu PDF)
      • ficheiro-pdf-1024×768.jpg (Tamanho Grande)
      • ficheiro-pdf-300×225.jpg (tamanho médio)
      • ficheiro-pdf-150×150.jpg (miniatura)
      • …(e os seus tamanhos personalizados para o ficheiro)

Inserir HTML no editor.

Selecione um ficheiro PDF no Carregador de Média e insira-o no editor. O HTML resultante é automaticamente escrito tal como indicado abaixo.

<a class="link-to-pdf" title="dummy-pdf" href="http://exmaple.com/wp-content/uploads/2015/01/dummy-pdf.pdf" target="_blank"><img width="227" height="320" class="size-medium wp-image-9999 thumb-of-pdf" src="http://exmaple.com/wp-content/uploads/2015/01/dummy-pdf-pdf-227x320.jpg" alt="thumbnail-of-dummy-pdf" /></a>

*Se estiver a usar algum plugin de visualização de documentos (tal como o GDE) e pretender inserir HTML criado pelo plugin, selecione “Default (Title)” no painel de multimédia.

Obter miniatura no ficheiro template.

O ID da miniatura criada é guardado no campo [‘_thumbnail_id’] nos artigos e páginas com ficheiros PDF anexados. É possível exportar o ID usando as funções ‘get_post_thumbnail_id($id_do_pdf)’ ou ‘get_post_meta($id_do_pdf, ‘_thumbnail_id’, true) para um ficheiro modelo.

$pdf_id = 'your PDF file ID';
if ( $thumbnail_id = get_post_thumbnail_id( $pdf_id ) ) {
echo '<a class="pdf-link image-link" href="'.wp_get_attachment_url( $pdf_id ).'" title="'.esc_attr( get_the_title( $pdf_id ) ).'" target="_blank">'.wp_get_attachment_image ( $thumbnail_id, 'medium' ).'</a>';
}

Ou, simplificando, pode chamar as miniaturas e criar ligações aos ficheiros PDF usando as funções ‘wp_get_attachment_image($your_pdf_id, $size)’ e ‘wp_get_attachment_link($your_pdf_id, $size)’ (v1.2 ou posterior)

*Caso o plugin seja desativado, estas funções devolverão resultados vazios.

$pdf_id = 'your PDF file ID';
echo wp_get_attachment_image ( $pdf_id, 'medium' );
echo wp_get_attachment_link ( $pdf_id, 'medium' );

Se invocar todos os ficheiros PDF que se encontram anexados ao artigo. Pode obtê-los através da função ‘get_posts’.

Exemplos.
Obter todos os ficheiros PDF que se encontram anexados ao artigo de forma dinâmica.

<?php
$pdfs = get_posts( 'posts_per_page=-1&post_type=attachment&post_mime_type=application/pdf&post_parent='.$post->ID );
if( $pdfs ): foreach( $pdfs as $pdf ):
  $thumbnail_id = get_post_thumbnail_id( $pdf->ID );
  if( $thumbnail_id ):
    echo '<li>';
    echo '<a href="'wp_get_attachment_url( $pdf->ID )'" class="link-to-pdf">';
    echo wp_get_attachment_image ( $thumbnail_id, 'medium' );
    echo '</a>';
    echo '</li>';
  endif;
endforeach; endif;
?>

Definir miniatura do PDF como imagem de destaque.

O plugin permite definir a miniatura do PDF como imagem de destaque. (v1.2 ou posterior)
Ou seja, sempre que definir um PDF como imagem de destaque, o plugin automaticamente define a miniatura do PDF como imagem de destaque.
É possível fazer uma chamada à miniatura usando a função ‘get_the_post_thumbnail’.

echo get_the_post_thumbnail ( $post->ID, 'medium' );

Caso pretenda o ficheiro PDF a partir da miniatura do artigo.

$thumb_id = get_post_thumbnail_id ( $post->ID );
$pdf_id = get_post( $thumb_id )->post_parent;
if ( $pdf_id && get_post_mime_type ( $pdf_id ) === 'application/pdf' ){
  $pdf = get_post($pdf_id);
  echo '<a class="link-to-pdf" href="'.wp_get_attachment_url($pdf_id).'" title="'.esc_html($pdf->post_title).'" target="_blank">'.get_the_post_thumbnail().'</a>'."\n";
}

Mostrar dados do anexo na legenda.

The plugin allows you to insert [caption] short-code into the post content area as when insert an image. If you want to display attachment title, description, file type, file size and so on, use img_caption_shortcode filter in your functions.php.
Here’s an example code…
function add_attachment_data_in_caption( $empty, $attr, $content ) {
$attr = shortcode_atts( array( ‘id’=>”, ‘align’=>’alignnone’, ‘width’=>”, ‘caption’=>” ), $attr );
if ( 1 > (int) $attr[‘width’] || empty( $attr[‘caption’] ) ) return ”;
if ( $attr[‘id’] ) {
$attr[‘id’] = ‘id=”‘ . esc_attr( $attr[‘id’] ) . ‘” ‘;
$attachment_id = explode(‘_’, $attr[‘id’]);
$attachment_id = $attachment_id[1];// get attachment id
if( get_post_mime_type ( $attachment_id ) === ‘application/pdf’ ){
$attachment = get_post( $attachment_id );
$bytes = filesize( get_attached_file( $attachment->ID ) );
if ($bytes >= 1073741824) $bytes = number_format($bytes / 1073741824, 2). ‘ GB’;
elseif ($bytes >= 1048576) $bytes = number_format($bytes / 1048576, 2). ‘ MB’;
elseif ($bytes >= 1024) $bytes = number_format($bytes / 1024, 2). ‘ KB’;
elseif ($bytes > 1) $bytes = $bytes. ‘ bytes’;
elseif ($bytes == 1) $bytes = $bytes. ‘ byte’;
else $bytes = ‘0 bytes’;
$attr[‘caption’] =
‘title : ‘ .$attachment->post_title. ‘
‘ . // title
‘caption : ‘ .$attr[‘caption’]. ‘
‘ .// caption
‘size : ‘ .$bytes. ‘
‘ . // file size
‘filetype : ‘ .get_post_mime_type ( $attachment_id ). ‘
‘ . // file type
‘description : ‘ .$attachment->post_content. ‘
‘; // description
}
}

    return 
      '<div ' .$attr['id']. 'class="wp-caption ' .esc_attr( $attr['align'] ). '" style="max-width: ' .( 10 + (int) $attr['width'] ). 'px;">' .
      do_shortcode( $content ). '<p class="wp-caption-text">' .$attr['caption']. '</p>' .
      '</div>';
}
add_filter('img_caption_shortcode', 'add_attachment_data_in_caption', 10, 3);

Criar miniaturas de todos os ficheiros PDF na biblioteca de multimédia.

Pode criar miniaturas de quaisquer ficheiros PDF já existentes.
Ative o plugin e clique em “Criar miniaturas agora” em “definições”. (v1.3.3 ou posterior)

Alterar os atributos da ligação ao anexo.

function pigen_filter_attachment_link ( $html, $attach_id, $attach_url, $attach_output ){
  $attach_title = get_the_title( $attach_id );
  $html = '<a class="link-to-pdf" href="'.$attach_url.'" rel="attachment wp-att-' .esc_attr($attach_id). '" title="'.esc_attr( $attach_title ).'" target="_blank">' .$attach_output. '</a>';
  return $html;
};
add_filter( 'pigen_filter_attachment_link', 'pigen_filter_attachment_link', 10, 4 );

Alterar os atributos da miniatura.

function pigen_filter_attachment_output ( $attach_output, $thumbnail_id, $thumbnail, $size, $align ){
  $attach_output =  '<img src="'. $thumbnail[0] .'" alt="'.get_post_meta( $thumbnail_id, '_wp_attachment_image_alt', true ).'" width="'. $thumbnail[1] .'" height="'. $thumbnail[2] .'" class="'.( $align ? 'align' .$align. ' ' : '' ). 'size-' .esc_attr( $size ). ' wp-image-'.$thumbnail_id.'" />';
  return $attach_output;
};
add_filter( 'pigen_filter_attachment_output', 'pigen_filter_attachment_output', 10, 5 );

Alterar as definições do ImageMagick.

Filtros – Permite-lhe adicionar as suas próprias alterações ao comportamento do ImageMagick através de hooks.

Exemplo de utilização de ImageMagick. (Não confundir com extensão Imagick)

function pigen_filter_convert_file_basename( $file_basename ){
  $file_basename = str_replace( '.jpg', '.png', $file_basename );
  return $file_basename;
};
add_filter( 'pigen_filter_convert_file_basename', 'pigen_filter_convert_file_basename' );

function pigen_filter_convert_imageMagick( $imageMagick, $before_name, $after_name, $max_width, $max_height ){
  $imageMagick = "convert -density 150 -quality 80 -background black -flatten {$max_width}x{$max_height} {$before_name} {$after_name}";
  return $imageMagick;
};
add_filter( 'pigen_filter_convert_imageMagick', 'pigen_filter_convert_imageMagick', 10, 5 );

Exemplo de utilização de extensão Imagick. (não confundir com ImageMagick)

function pigen_filter_convert_file_basename( $file_basename ){
  $file_basename = str_replace( '.jpg', '.png', $file_basename );
  return $file_basename;
};
add_filter( 'pigen_filter_convert_file_basename', 'pigen_filter_convert_file_basename' );

function pigen_filter_convert_imagick( $imagick ){
  $imagick->setImageBackgroundColor( 'black' );
  $imagick->setCompressionQuality( 80 );
  $imagick->setImageFormat( 'png' );
return $imagick;
};
add_filter( 'pigen_filter_convert_imagick', 'pigen_filter_convert_imagick' );

Guardar automaticamente a imagem/PDF como imagem de destaque.

Definir automaticamente a miniatura do PDF como imagem de destaque.

function save_pdf_thumb_as_featuredimage ( $post_id ) { 
    if ( wp_is_post_revision( $post_id ) ) return; 
    if ( get_post_type( $post_id ) !== 'post' ) return; // set your post type
    if ( get_post_meta( $post_id, '_thumbnail_id', true ) ) return; // post already has featured image
    $attaches = get_posts ( 'post_parent='.$post_id.'&numberposts=-1&post_type=attachment&post_mime_type=application/pdf&orderby=menu_order&order=ASC' );
    if ( $attaches ): foreach( $attaches as $attach ):
        if ( $thumb_id = get_post_meta( $attach->ID, '_thumbnail_id', true ) ){ // if pdf has thumbnail
            update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
            break;
        }
    endforeach; endif;
}
add_action( 'save_post', 'save_pdf_thumb_as_featuredimage' );

Definir automaticamente a primeira imagem/PDF como imagem de destaque.

function save_thumbnail_as_featuredimage ( $post_id ) { 
    if ( wp_is_post_revision( $post_id ) ) return;
    if ( get_post_type( $post_id ) !== 'post' ) return; // set your post type
    if ( get_post_meta( $post_id, '_thumbnail_id', true ) ) return; // post already has featured image
    $args = array(
        'post_parent' => $post_id,
        'post_type' => 'attachment',
        'numberposts' => -1,
        'post_status' => null,
        'orderby' => 'menu_order date',
        'order' => 'ASC ASC'
    );
    $attaches = get_posts($args);
    if ( $attaches ): foreach( $attaches as $attach ):
        if ( $attach->post_mime_type == 'application/pdf' ){
            if ( $thumb_id = get_post_meta( $attach->ID, '_thumbnail_id', true ) ){ // if pdf has thumbnail
                update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
                break;
            }
        } elseif ( preg_match("/^image\//", $attach->post_mime_type ) ) {
            update_post_meta( $post_id, '_thumbnail_id', $attach->ID );
            break;
        }
    endforeach; endif;
}
add_action( 'save_post', 'save_thumbnail_as_featuredimage' );

Ecrãs

  • Sem configurações. Basta enviar um ficheiro PDF e inseri-lo no editor.
  • A imagem de um ficheiro PDF inserido é editável (alinhamento, tamanho, etc...) tal como um vulgar ficheiro de imagem.
  • Pode definir o PDF como imagem de destaque e usar as funções para o PDF da mesma forma como usaria para um ficheiro de imagem.
  • Pode controlar as definições predefinidas e criar miniaturas de ficheiros PDF já existentes na página do plugin.

Instalação

  1. Copie a pasta ‘pdf-image-generator’ para dentro da sua pasta de plugins.
  2. Ative o plugin no menu ‘Plugins’. O plugin não necessita de configurações nem alterações ao núcleo do WordPress.
    Consulte o separador ‘Outras notas’ para mais informação.

Perguntas frequentes

Installation Instructions
  1. Copie a pasta ‘pdf-image-generator’ para dentro da sua pasta de plugins.
  2. Ative o plugin no menu ‘Plugins’. O plugin não necessita de configurações nem alterações ao núcleo do WordPress.
    Consulte o separador ‘Outras notas’ para mais informação.

Avaliações

19 Fevereiro, 2018
Initially I didn't think this was working. I found that it worked perfectly when I uploaded a new pdf as opposed to using one already in the media library. Thanks for this!
Ler todas as 20 avaliações

Contribuidores e programadores

“PDF Image Generator” é software de código aberto. As seguintes pessoas contribuíram para este plugin:

Contribuidores

“PDF Image Generator” foi traduzido para 2 locales. Obrigado aos tradutores pelas suas contribuições.

Traduza o “PDF Image Generator” para o seu idioma.

Interessado no desenvolvimento?

Consulte o código, consulte o repositório SVN, ou subscreva o registo de alterações por RSS.

Registo de alterações

1.5.6

25.Apr.2017.
Fixed Undefined index message.

1.5.5

26.Feb.2017.
Fixed CMYK color space problem and regenerating file problem.

1.5.4

10.Feb.2017.
Fixed Undefined index message.

1.5.3

2.Feb.2017.
Fixed Undefined index message.

1.5.2

8.Jan.2017.
Fixed the bug that caused configuring a wrong guid when upload file on an older post. thumbnail naming.

1.5.1

10.Nov.2016.
Change capability of add_options_page. Fix wp.media.view filters and text.

1.5.0

10.Nov.2016.
Fix regenerating and overwriting file problems. Change default imagick dpi from 72 to 150.

1.4.9

21.Oct.2016.
Fix conflict with ACF in media attachment edit page. Fix setImageAlphaChannel problem.

1.4.8

18.Sep.2016.
Fix error strings. Improve branching process of Imagick. Add guid parameter to a thumbnail file.

1.4.7

28.Aug.2016. Add error_log into the converting process.

1.4.6

28.Jun.2016. Change get_posts to get_results. Add translation to img alt. Change converting process of color.

1.4.5

2016-jun-05 Adicionada prioridade para a função wp_get_attachment_metadata. Adicionada a classe thumb-of-pdf para as miniaturas PDF criadas através da função wp_get_attachment_image. Corrigido um conflito existente ao alterar media-frame-menu no editor wp.media.

1.4.4

2016-mai-12 – Adicionado processo de deteção e de cores e comando para aplicar o perfil ICC.

1.4.3

2016-mai-11 – Adicionada caixa de miniatura na página de edição do PDF. Alteração e bifurcação do processo conforme definições de conversão e versões do ImageMagick.

1.4.2

2016-mai-08 – Definições para tradução conforme as normas do GlotPress. Alteração da resolução predefinida para 300ppp.

1.4.1

2016-abr-14 – Separação dos processos de conversão conforme as versões do ImageMagick. Utilização de “flattenImages” com o api Imagick no ImageMagick lt6.3.8. utilização de “-alpha remove” no ImageMagick gte6.7.5.

1.4.0

2016-abr-05 – Adicionada opção para criar miniaturas em PNG e selecionar a cor de fundo. Alteração para não destruir a ligação do hook quando previamente estiver a usar o GDE (Google Doc Embedder).

1.3.9

2016-mar-20 – Alteração no filtro Imagick ‘flattenImages()’ para “setImageAlphaChannel” & “mergeImageLayers”. Alteração do comportamento ao inserir imagem sem ligação para multimédia. Alteração no processo de ativação.

1.3.8

2016-fev-12 – Adicionado filtro para esconder o ficheiro da imagem do PDF no modo Listagem na Biblioteca de Multimédia. Alteração ao comportamento de ‘wp.media.view.settings’. Alterações e limpeza nas opções de imagem de destaque que não estavam a funcionar bem.

1.3.7

2016-fev-07 – Adicionado filtro para a ligação ao anexo e alteração à forma de alterar o nome do ficheiro.

1.3.6

2015-dez-22 – Modificação no CSS e na mensagem de ativação.

1.3.5

2015-nov-20 – Alteração nos campos ‘Max-width’, ‘Max-height’ e ‘quality’ de forma a aceitar apenas valores numéricos. O comportamento da opção “hide thumbnail” foi corrigido. Ficheiros de tradução atualizados.

1.3.4

2015-out-30 Adicionada opção para definir manualmente o tamanho máximo das miniaturas criadas. Adicionada opção para criar imagens de ficheiros PDF já existentes. Melhoramentos pontuais.

1.3.3

2015-out-21 – Adicionados filtros para alteração das definições do ImageMagick.

1.3.2

2015-out-20 – Adicionada opção para selecionar as funções do ImageMagick. Correção do alinhamento predefinido da multimédia inserida. Atualização dos ficheiros de tradução.

1.3.1

2015-out-18 – Correção pontual.

1.3

2015-out-17 – Definição de classes no ficheiro de plugin file. Adicionadas definições para mostrar anexo ao inserir um PDF.

1.2.2

2015-ou-14 – Correção pontual.

1.2.1

2015-out-12 – Adicionada página do plugin page, definições personalizáveis e ficheiros de idioma japonês.

1.2.0

2015-out-09 – As várias miniaturas do mesmo PDF ficam agora escondidas na biblioteca de multimédia. Possibilidade de definir o PDF como imagem de destaque e utilizar a função ‘wp_get_attachment_image’ no ficheiro PDF.

1.1.6

2015-jun-28 – A função ‘pigen_change_icon’ foi desativada apenas na biblioteca de multimédia estática.

1.1.5

2015-mai-13 – Adiciona automaticamente o texto à legenda no short-code sempre que o campo da legenda seja preenchido.

1.1.4

2015-mai-02 – Removido o [0] do nome do ficheiro da imagem.

1.1.3

2015-abr-24 – Alterada a forma de verificar a ativação para quando ‘exec()’ se encontra ligado ou desligado no servidor.

1.1.2

2015-abr-04 – Removido o processo de criação de ficheiro teste.

1.1.1

2015-mar-14 – Corrigido erro em ‘colorspace’ e alteração em ‘register_activation_hook’ e algumas mensagens de erro.

1.1

2015-fev-03 – Suporte para a Extensão Imagick e inclusão de ‘uninstall.php’.

1.0.1

2015-jan-17 – Adicionada verificação de instalação do ImageMagick.

1.0

2015-jan-12 – Primeira versão tornada pública.

0.1

2014-set-26 – Primeira versão.