2017-01-20 2 views
0

J'ai ce code dans un template Smarty qui génère des liens de fichiers (qui sera format PDF):Créer une image miniature pour PDF dans Smarty

{foreach from=$attachments_data item="file"} 
     <p class="attachment__item">   
     {$file.description} ({$file.filename}, {$file.filesize|formatfilesize nofilter}) [<a class="attachment__a cm-no-ajax" href="{"attachments.getfile?attachment_id=`$file.attachment_id`"|fn_url}">{__("download")}</a>] 
     </p> 
    {/foreach} 

Je trouve dans une autre question une méthode pour utiliser PHP pour générer un Aperçu de l'image d'un PDF. Y at-il un moyen de convertir ce PHP en Smarty afin de travailler avec mon fichier de modèle CS-Cart?

<?php 
$im = new imagick('file.pdf[0]'); 
$im->setImageFormat('jpg'); 
header('Content-Type: image/jpeg'); 
echo $im; 
?> 
Ou est-ce qu'il y a un autre moyen de le faire?

+0

Il suffit de traiter l'URL PHP qui génère votre image comme vous le feriez pour l'URL d'image normale que vous utiliseriez dans la balise . – Scuzzy

+0

@Scuzzy Je ne pense pas que vous comprenez la question. J'ai besoin de l'équivalent Smarty de ce script PHP. – user500665

+0

Non, je comprends, mais vous n'utiliseriez pas "smarty" pour renvoyer votre contenu image/jpeg binaire. Vous pouvez soit les générer en PHP puis les écrire dans un dossier pour une lecture statique, ou les servir dynamiquement à partir d'un script PHP. – Scuzzy

Répondre

1

Ma préférence serait de mettre en cache ces dans un dossier tempoary pour la lecture statique, cependant, vous pouvez le faire sur demande avec cette partie de PHP que vous avez fourni assez facilement

DOSSIER SYSTÈME S'IL VOUS PLAÎT METTRE EN ŒUVRE une meilleure sécurité

pdf_to_image.php

<?php 

// you must create better file system security than this 
$filename = 'directory_with_pdfs' . DIRECTORY_SEPERATOR . basename($_GET['filename']); 
if(file_exists($filename) === true) 
{ 
    $im = new imagick($filename . '[0]'); 
    $im->setImageFormat('jpg'); 
    header('Content-Type: image/jpeg'); 
    header('Content-Disposition: attachment; filename="'.basename($filename).'"'); 
    echo $im; 
} 
else 
{ 
    http_response_code(404); 
} 

Smarty Syntaxe

{foreach from=$attachments_data item="file"} 
    <img src="pdf_to_image.php?filename={$file.filename|urlencode}"> 
{/foreach} 
+0

Ah ok, merci pour l'exemple. Quand j'essaye ceci cependant, le imr src reste pdf_to_image.php ... – user500665

+0

Je ne peux pas aider au delà de cette approche simple, ce que je recommande, crée un répertoire lisible par le public avec l'accès d'écriture, et crée vos miniatures de jpg pendant que votre manuscrit est s'exécuter quand ils n'existent pas, puis référencer ces URL via votre template smarty. – Scuzzy