我要求在 PDF 文档中提供 CASS 认证地址。这涉及使用经过认证的邮寄地址,并且需要使用条形码打印。
我怎样才能生成这样的条形码?可能存在已经这样做的 PHP 库吗?
要记住的一件事是,CASS 认证地址的认证将在 95 天后过期。这意味着您需要至少每三个月重新认证您(或您客户的)数据库。没有它,您将无法生成 IMB(智能邮件条码),因为 IMB 由许多元素组成,包括 12 位投递点条码。
我想你已经有一个地方可以证明你的地址,但是对于那些阅读了这个 Stack Overflow 问题并且没有经过认证和标准化的地址的人,你可以进行谷歌搜索并找到一些提供商。
为了全面披露,我是 SmartyStreets 的创始人。我们提供地址验证和验证,它会返回 12 位交付点条形码,IMB 是从中派生的。我很乐意亲自回答您与地址验证和标准化相关的任何其他代码。
tc-lib-barcode ( https://github.com/tecnickcom/tc-lib-barcode ) PHP 软件库允许您生成“IMB - 智能邮件条码 - Onecode - USPS-B-3200”条码。
源代码完全符合 PSR-2 标准,可以使用Composer轻松添加到您的 PHP 项目中。
原始代码已从TCPDF移植和重构,并已在数十亿文档中使用。
USPS 有库和帮助代码,您可以为所有主要平台下载。他们没有 PHP 类,但您可以exec
或system
向操作系统生成代码。
我从这里的其他一些答案中尝试了几种方法,但它们对我不起作用:
USPS 的官方库和帮助代码不是很清楚。它们还依赖于平台,如果您打算在 Excel 或其他一些桌面应用程序中进行邮件合并,它们似乎最有用。如果您正在尝试与 PHP Web 应用程序集成,我不确定这是一条非常好的途径。
tc-lib-barcode似乎没有使用官方的 USPS 字体。并排比较时看起来不正确,当我尝试使用此工具验证条形码时,它失败了。
我最终改用了这个 IMB Converter 类。您可以下载USPS 官方字体 USPSIMBStandard,然后使用该字体显示您的条形码哈希(它应该在 fonts/scalable/trueType 文件夹中)。要生成条形码哈希,您首先需要生成一个代码。USPS 的此 PDF第 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 编码器相比,IMB::Convert 的准确度尚不清楚。我测试了一些组合,它们似乎都匹配。如果你确实想使用官方的 USPS 编码器,你可以像这样在命令行上运行它:
$ IMBshell 0027012345678955555590210