CI 框架内生成pdf格式的条形码

电商行业,新需求,需要生成pdf格式的条形码,使用框架CI,如图所示。

 

包含内容  二维码,图片旋转,生成pdf

 

第一步:生成二维码

准备工作:

barcode 下载  https://www.barcodebakery.com/en/download 我下载的是PHP5版本的

放入libraries文件夹,采用128的条形码

PDF 用的是FPDF  

http://www.fpdf.org/

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方法就可以,另外出现了显示得字体与浏览器挂钩的现象,我还没找出问题来,如果有大佬知道记得教我这个菜鸡。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用iText库可以很方便地生成PDF文件,并在其中添加条形码。下面是一个使用iText生成PDF文件并添加条形码的示例代码: ```java import com.itextpdf.io.font.FontConstants; import com.itextpdf.kernel.colors.Color; import com.itextpdf.kernel.colors.DeviceRgb; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.kernel.pdf.canvas.PdfCanvas; import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import com.itextpdf.layout.property.TextAlignment; import com.itextpdf.text.pdf.Barcode128; import java.io.FileNotFoundException; public class BarcodeGenerator { public static void main(String[] args) { String outputFilePath = "path/to/output.pdf"; String barcodeText = "1234567890"; try { // 创建PDF文档 PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outputFilePath)); Document doc = new Document(pdfDoc); // 创建条形码对象 Barcode128 barcode = new Barcode128(pdfDoc); barcode.setCode(barcodeText); // 设置条形码的颜色 Color barcodeColor = new DeviceRgb(0, 0, 0); // 黑色 barcode.setColor(barcodeColor, null); // 将条形码绘制到PDF页面上 PdfFormXObject barcodeXObject = barcode.createFormXObject(pdfDoc); PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage()); canvas.addXObject(barcodeXObject, 36, 36); // 添加条形码文本 Paragraph text = new Paragraph(barcodeText) .setFontFamily(FontConstants.COURIER) .setFontSize(12) .setTextAlignment(TextAlignment.CENTER); doc.add(text); // 关闭文档 doc.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } } } ``` 这段代码使用了iText库的`Barcode128`类来生成条形码,并使用`PdfCanvas`将条形码绘制到PDF页面上。同时,还添加了条形码的文本内容。你可以根据需要修改条形码的颜色、位置和文本样式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值