在Smarty中为PDF创建缩略图

时间:2017-01-20 00:54:46

标签: php smarty cs-cart

我在Smarty模板中有这个代码,生成文件链接(将是PDF格式):

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

import Customers from './components/Customers/Customers.vue'

const router = new VueRouter({
  mode: 'history',
  base: __dirname,
  history: true,
  routes: [
    { path: '/customers', component: Customers }
  ]
})

new Vue ({
  router
}).$mount('#app')

我在另一个问题中发现了一种使用PHP从PDF生成预览图像的方法。

   {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}

有没有办法将这个PHP转换为Smarty才能使用我的CS-Cart模板文件?还是有另一种方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

我的偏好是将这些缓存到一个用于静态读取的临时文件夹中,但是,您可以使用您提供的那部分PHP轻松地按需执行此操作

请实施更好的文件系统安全

<强> 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语法

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