的Prestashop。如何向mailalert模块添加订单条码?

时间:2017-09-25 06:10:21

标签: php html prestashop barcode

我想把我们的内部参考编号作为条形码添加到mailalert。

我可以使用此代码

插入PDF发票
<tr>
<td style="width: 17%"></td>
<td style="width: 83%">

{assign var=black value=[0,0,0]}{assign var=white value=[255,255,255]}
{assign var=stuff value=['position'=>'S', 'border'=>false, 'padding'=>4, 
'fgcolor'=>$black, 'bgcolor'=>$white, 'text'=>false, 'font'=>'helvetica', 
'fontsize'=>8, 'stretchtext'=>4]}
{assign var=params value=TCPDF::serializeTCPDFtagParameters(array($order-
>getUniqReference(), 'C39', '', '', 40, 15, 0.4, $stuff, 'N'))}
<tcpdf method="write1DBarcode" params="{$params}" />

</td>

但我想插入内部订单确认邮件。 如何将订单号转换为条形码?用于mmy php / html ... 感谢

2 个答案:

答案 0 :(得分:0)

我认为你有几种选择。由于我不了解PHP或Prestashop,我无法为您提供代码,但我想引入一些想法。

条码字体

条形码字体允许您将条形码嵌入为普通文本。这里的问题是您的确认电子邮件的收件人可能没有安装这些字体,所以如果您可以使用或不使用这取决于具体情况。

  • 如果您事先知道确认电子邮件的收件人(通常情况下,B2B中有一组受限制的客户),您最终可以指示他们安装所需的字体。

  • 如果您要处理未知收件人,可以尝试将字体嵌入HTML。我知道现在大多数浏览器都正确处理嵌入字体,但我不确定电子邮件客户端是否也是如此。它可能取决于收件人使用的电子邮件客户端。

考虑到这一点,从技术的角度来看,使用条形码字体是理想的(轻量,快速,自然的文字)但不幸的是,总会有人没有安装这些字体或者正在使用这些字体过时的电子邮件客户端。

条形码作为图片

我很确定那里有库可以生成条形码作为图像。几乎所有的电子邮件客户端都正确处理嵌入的图像,并且能够以内联方式显示它们,所以这是我可能采用的路径。

如果您无法找到这样的库,您仍然可以生成仅包含条形码的PDF(来自您的问题,我们知道您可以这样做),然后将该PDF转换为图片。我个人知道有很多库可以做后者。

然后将该图像作为内嵌图像嵌入到HTML电子邮件中。

其他解决方案

我确信这个问题有更多的解决方案。例如,您可能使用某个库以SVG格式输出条形码。大多数浏览器都能正确显示内联SVG,但与嵌入字体一样,我不确定电子邮件客户端。您可能会遇到与其他解决方案/格式类似的问题。

答案 1 :(得分:0)

我找到了使用此脚本将转换订单号转换为BARCODE图像的解决方案

https://groups.google.com/forum/#!topic/rabbitmq-users/CeaOic-oPYs

但我在将信息插入Mailalert的邮件时遇到了问题。

我试图直接插入脚本邮件,但可能是应该修改mailalert.php

<script type="text/javascript" src="code39.js"></script>
    <style type="text/css">
   #barcode {font-weight: normal; font-style: normal; line-height:normal; sans-serif; font-size: 12pt}
    </style>
</head>
<body>


Input : {order_name}<br />


<div id="externalbox" style="width:5in">
<div id="inputdata" >{order_name}</div>
</div>


<br />


<script type="text/javascript">
/* <![CDATA[ */
  function get_object(id) {
   var object = null;
   if (document.layers) {
    object = document.layers[id];
   } else if (document.all) {
    object = document.all[id];
   } else if (document.getElementById) {
    object = document.getElementById(id);
   }
   return object;
  }
get_object("inputdata").innerHTML=DrawCode39Barcode(get_object("inputdata").innerHTML,0);
/* ]]> */
</script>

有人能帮帮我吗?感谢