文章来自:PHP自学中心链接:http://www.startphp.cn作者:磊丰商务合作:请加微信(QQ):2230304070
视频教程分享
视频教程有很多,基础的,进阶的,实战的,有查看文章的都会知道,我都会在这里带上一些视频教程有需要的可以获取,我还是希望你获取的视频教程不是用来收藏的,而是用来计划学习的用公众号每天来阅读文章,学习,目前是最方便的。
这是自闲暇的时间里,利用5分钟读读技术文章,丰富自己的知识当然,学习有很多种方法,不单单是基于公众号来学习,你可以到网上查找更多的教程,学习文档,技术书本,视频教程!各有各的爱好吧!今天分享的视频教程:
Laravel5.8从入门到实战视频教程+源码【93节】链接:http://www.startphp.cn/detail/55
文章正文
咱们的开发语言还是用框架:laravel5应用场景出库单打印出三色单,这个很普遍,以下用PHP来实现出库单的打印预览,主要用到tcpdf插件,整合到laravel项目中tcpdf插件可以到官网下载最新的版本。
我这里用的是最新版本,这里提供下载插件链接:链接:https://pan.baidu.com/s/1Mn8ho_AxyJfWR7YUa0wzhQ提取码:9doa三色单截图:
插件截图:
开发功能效果
点击按钮后跳转到打印页面,此页面包含下载pdf功能
点击打印按钮就跳转到打印的页面了
这个时候按打印,你电脑如果有连接打印机的话就可以直接打印出出库单了下面来看看如何引入tcpdf把tcpdf文件打包放在laravel根目录或者其他目录里,这一步没关系,只要在controer我是的命名空间里能调用到就好了,我是放在app目录里,命名一个规范名字:Printer
路由文件Route::any(admin/outWares/{$id}/printer, [as=> admin.outWares.printer, uses => PrinterController@index
]);PrinterController.php都在这个文件里处理首先要引入插件:use Printer; index方法输入,其他的都是处理各自的业务流程,下面看看源码就明白了usePrinter;public
functionindex($id){$outWare = $this->outWareRepository->findWithoutFail($id);//获取处理的出库单详情$out_ware_detail =
$this->getWareDetail($outWare->outWareDetail);//这里处理出库单数据$data = [......remark => $outWare->remark,
demand_time => $demand_time,created_at => $outWare->created_at->format(Y-m-d)];$address =
$this->getWareAddress($address); //获取处理的地址$this->TCPDF($data,$out_ware_detail,$address); //调用主要方法
}/** * Function:处理地址样式居中 * User:wucy * @param $address * @return string */publicfunctiongetWareAddress
($address){if(strlen($address) < 80){return<<
{$address}Eof; }else{return<<
{$address}Eof; }}/** * Function:获取出库单商品详情 * User:wucy * @param $outWareDetail * @return string
*/publicfunctiongetWareDetail($outWareDetail){ $temp_row_data = []; $collection = collect($outWareDetail);
$grouped = $collection->groupBy(function($item, $key){ $item->stock = abs($item[goods_number
]);return $item[sku_id]; }); $i=1;foreach ($grouped as $key => $item){ $temp_row_data[$key] = [
key_num => $i++,goods_name => isset($item[0]->goodsSku) ? $item[0]->goodsSku->goods->goods_name :
--,attr_name => isset($item[0]->goodsSku) ? $item[0]->goodsSku->value_name : --,goods_unit => isset($item[
0]->goodsSku) ? $item[0]->goodsSku->goods->goods_unit : --,total => $item->sum(stock),remark_detail
=>isset($item[0]) ? $item[0]->remark_detail : --, ]; }if ($temp_row_data) { $item = ;
foreach ($temp_row_data as $v) { $item.= $this->getRowsTable($v); }return $item; }
}/** * Function: * User:wucy * @param $data * @return string */publicfunctiongetRowsTable($data){if($data){
return<<
{$data[goods_name]}
{$data[attr_name]} {$data[goods_unit]}
{$data[total]}
{$data[remark_detail]} Eof; }}/** * Function:TCPDF,处理的出库单在这里生成
* User:wucy * @param $data * @param $out_ware_detail */publicfunctionTCPDF($data,$out_ware_detail,$address)
{// create new PDF document $pdf = new \TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true
, UTF-8, false);// set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor(仓库系统
); $pdf->SetTitle(出库单); $pdf->SetSubject(TCPDF Tutorial); $pdf->SetKeywords(TCPDF, PDF, example, test, guide
);// set default header data//$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE. 048, PDF_HEADER_STRING);
// set header and footer fonts//$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, , PDF_FONT_SIZE_MAIN));
//$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, , PDF_FONT_SIZE_DATA)); $pdf->setPrintHeader(false
); $pdf->setPrintFooter(false);// set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);// set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);//$pdf->SetFont(stsongstdlight,, 14);
$pdf->SetFont(droidsansfallback,, 14);// add a page $pdf->AddPage(); $pdf->Write(0, , , 0,
L, true, 0, false, false, 0); $pdf->setCellHeightRatio(1.3); $pdf->SetLineWidth(2); $tbl = <<
出库单
单据日期:
{$data[created_at]} 出库单号:
{$data[out_sn]}
发货仓
{$data[ware]} 收货公司
{$data[company]} 提货/收货地址
{$address} 发货人
{$data[consignor]} 发货人电话
{$data[telephone]}
提货人/收货人信息
{$data[consignee]} {$data[consignee_phone]}
要求配送时间
{$data[demand_time]} 订单备注
{$data[remark]}
出库明细
编号
货品名称
属性
单位
出货数量
实发数量
实收数量
备注
{$out_ware_detail} 签收人
签收日期
请签收人签字后务必将扫描件发至我司联系人邮箱,否则默认实收与实发数量一致
EOD; $pdf->writeHTML($tbl, true, false, false, false, );// -----------------------------------------------------------------------------
//Close and output PDF document $pdf->Output(出库单_.date(YmdHis)..pdf, I);}以上是文章全部内容,有学习与经验交流的友友可以加小编为好友
。有技术问题可以一起探讨与交流,希望你是学习技术的。让学习成为一种习惯微信公众号:php自学中心长按二维码加好友
学习 | 交流 | 分享 | 文章
亲爱的读者们,感谢您花时间阅读本文。如果您对本文有任何疑问或建议,请随时联系我。我非常乐意与您交流。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。