电商行业,新需求,需要生成pdf格式的条形码,使用框架CI,如图所示。
包含内容 二维码,图片旋转,生成pdf
第一步:生成二维码
准备工作:
barcode 下载 https://www.barcodebakery.com/en/download 我下载的是PHP5版本的
放入libraries文件夹,采用128的条形码
PDF 用的是FPDF
fpdf 中文库 http://www.fpdf.org/download/chinese.zip
require_once(SYSDIR.'App/libraries/Barcode/class/BCGColor.php');
require_once(SYSDIR.'App/libraries/Barcode/class/BCGFontFile.php');
require_once(SYSDIR.'App/libraries/Barcode/class/BCGDrawing.php');
require_once(SYSDIR.'App/libraries/Barcode/class/BCGLabel.php');
require_once(SYSDIR.'App/libraries/Barcode/class/BCGcode128.barcode.php');
//二维码
$colorFront = new BCGColor(0, 0, 0);
$colorBack = new BCGColor(255, 255, 255);
$font = new BCGFontFile( FCPATH.'fonts/arial.ttf', 18);
$code = new BCGcode128();
$code->setScale(2);
$code->setThickness(30);
$code->setForegroundColor($colorFront);
$code->setBackgroundColor($colorBack);
$code->setFont($font);
$code->parse($label);
$drawing = new BCGDrawing('label.png', $colorBack);
$drawing->setBarcode($code);
$drawing->draw();
$drawing->finish(BCGDrawing::IMG_FORMAT_PNG);
//旋转
$source = imagecreatefrompng('label.png');
$bgd_color = imagecolorallocate($source,128,10,188);
$degrees=90;
$rotate = imagerotate($source, $degrees, $bgd_color);
imagepng($rotate,'label.png');
imagedestroy($source);
//生成PDF
$this->load->library('pfdp/PDFChinese.php');
根据CI语法修改
$size=array(100,100);
$pdf = new PDFChinese('P','mm',$size);
$pdf->AddGBFont('Simhei','黑体');
$pdf->AddPage ();
$pdf->SetFont('Simhei','',14);
$txt="样品单[".$label."]";
$pdf->Rect(0,0,100,10);
$pdf->Text(30,6,iconv("utf-8","gbk",$txt));
$pdf->Rect(0,10,100,90);
$pdf->Image('label.png',10,13);
$pdf->line(35,10,35,100);
if(!empty($ImgUrl)){
$pdf->Image($ImgUrl,38,30,60,60);
}
$pdf -> Output();
做这个的时候遇到了问题,生成字体的时候用chinese的那个插件就更改不了字体,但是用自带的addFont方法就可以,另外出现了显示得字体与浏览器挂钩的现象,我还没找出问题来,如果有大佬知道记得教我这个菜鸡。