如何通过PHP生成IntelligentMail®条形码(OneCode)

时间:2011-02-23 10:17:06

标签: php generator barcode usps

我有要求在PDF文档上提供CASS认证地址。这涉及使用经过认证的邮寄地址,需要使用barcode打印。

如何生成这样的条形码?可能存在已经执行此操作的PHP库吗?

4 个答案:

答案 0 :(得分:5)

要记住的一件事是,CASS认证地址的认证在95天后到期。这意味着您需要至少每三个月重新认证您(或您客户的)数据库。没有它,你就无法生成IMB(智能邮件条形码),因为IMB由许多元素组成,包括12位数的交付点条形码。

我认为您已经有了一个认证地址的地方,但对于那些阅读此Stack Overflow问题并且没有经过认证和标准化的地址的人,您可以进行Google搜索并找到少数提供商。< / p>

为了充分披露,我是SmartyStreets的创始人。我们提供address verification and validation,它会返回从中导出IMB的12位数的交付点条形码。我很乐意亲自回答您与地址验证和标准化相关的任何其他代码。

答案 1 :(得分:5)

tc-lib-barcodehttps://github.com/tecnickcom/tc-lib-barcode)PHP软件库允许您生成&#34; IMB - 智能邮件条码 - Onecode - USPS-B-3200&#34;条形码。

源代码完全符合PSR-2标准,可以使用Composer轻松添加到PHP项目中。

原始代码已从TCPDF移植并重构,并已在数十亿份文档中使用。

答案 2 :(得分:3)

USPS有libraries and helper code您可以下载所有主要平台。他们没有PHP类,但您可以execsystem向操作系统生成代码。

答案 3 :(得分:0)

我从这里的其他一些答案中尝试了几种方法,但它们对我不起作用:

  1. USPS的官方库和帮助程序代码不是很清楚。它们还依赖于平台,如果您打算在Excel或某些其他桌面应用程序中进行邮件合并,它们似乎最有用。如果您尝试与PHP Web应用程序集成,我不确定这是否是一个很好的方法。

  2. 似乎tc-lib-barcode没有使用USPS官方字体。并排比较时看起来不正确,当我尝试使用this tool验证条形码时,它失败了。

我最终改用this IMB Converter class。您可以下载USPS official font USPSIMBStandard,然后使用该字体显示条形码哈希值(该哈希值应位于fonts / scalable / trueType文件夹中)。要生成条形码哈希,首先需要生成一个代码。 this PDF from the USPS的第2页对此进行了概述。有了代码(例如0027012345678955555590210)后,您可以通过转换器类运行它:

$barcode = IMB::Convert('0027012345678955555590210');

这将返回TFDAAFAADDTDDFDFDATADDDATDAFAFDATADADADFATAFAFAFDADATFTFDAFDTADDT。然后,您可以使用USPSIMBStandard字体将其直接注入PDF或以HTML显示。

<p style="font-family:'USPSIMBStandard'; color:#000; font-size: 100px;"><?php echo $barcode; ?></p>

USPS Bar Code Example

生成条形码哈希时,目前尚不清楚IMB :: Convert与官方USPS编码器相比有多准确。我测试了一些组合,它们似乎都匹配。如果您确实想使用官方的USPS编码器,则可以在命令行上运行它,如下所示:

$ IMBshell 0027012345678955555590210