最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?批量生成條碼的示例代碼

 更新時間:2023年08月06日 16:04:21   作者:宇翔苦澀  
這篇文章主要介紹了Java?批量生成條碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

批量生成PDF條碼

效果圖:

//調(diào)用下方接口注意編碼格式
?if(CollectionUtil.isNotEmpty(productExList)){
? ? ?String exportFileName = URLEncoder.encode("商品條碼", "UTF-8") + DateUtil.format(new Date(), "yyyyMMddHHmmss");
? ? ?response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + exportFileName + ".pdf");
? ? ?response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
? ? ?response.setHeader("content-Type", "application/pdf");
? ? ?generateProdBarcodePDF(productExList, response.getOutputStream(),response);
?}else {
? ? ?response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "沒有要生成的條碼請調(diào)整查詢條件后重新生成");
?}
/**
? ? ?* 批量生成商品條形碼pdf文件
? ? ?*
? ? ?* @param productExList 條碼數(shù)據(jù)x信息【對象集合】
? ? ?* @param os ? ?輸出流
? ? ?* @throws IOException
? ? ?*/
? ? public static void generateProdBarcodePDF(List<MProductEx> productExList, OutputStream os,HttpServletResponse response) throws IOException {
? ? ? ? Document document = null;
? ? ? ? try {
? ? ? ? ? ? document = new Document(new Rectangle(283F, 425F), 10, 10, 10, 10);
? ? ? ? ? ? PdfWriter writer = PdfWriter.getInstance(document, os);
? ? ? ? ? ? document.open();
? ? ? ? ? ? PdfContentByte cb = writer.getDirectContent();
? ? ? ? ? ? //判斷列,一條數(shù)據(jù)只允許單列
? ? ? ? ? ? int dataCount = productExList.stream().filter(f -> StringUtils.isNotEmpty(f.getProdLabel())).collect(Collectors.toList()).size();
? ? ? ? ? ? int numColumns = 1;
? ? ? ? ? ? if (dataCount > 1) {
? ? ? ? ? ? ? ? numColumns = 2;
? ? ? ? ? ? }
? ? ? ? ? ? BaseFont bfChinese = BaseFont.createFont("C:\\Windows\\Fonts\\simsun.ttc,1", ?BaseFont.IDENTITY_H,
? ? ? ? ? ? ? ? ? ? BaseFont.NOT_EMBEDDED);
? ? ? ? ? ? Font fontChinese = new Font(bfChinese, 5, Font.NORMAL);
? ? ? ? ? ? //創(chuàng)建一個兩列的表格
? ? ? ? ? ? PdfPTable headerTable = new PdfPTable(numColumns);
? ? ? ? ? ? if(numColumns == 1){
? ? ? ? ? ? ? ? headerTable.setWidthPercentage(40.0f);
? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? headerTable.setWidthPercentage(80.0f);
? ? ? ? ? ? }
? ? ? ? ? ? PdfPCell rightCell = null;
? ? ? ? ? ? Pattern pat = Pattern.compile("[\u4e00-\u9fa5]");
? ? ? ? ? ? Matcher m = null;
? ? ? ? ? ? for (MProductEx p : productExList) {
? ? ? ? ? ? ? ? m = pat.matcher(p.getProdLabel());
? ? ? ? ? ? ? ? if(StringUtils.isNullOrEmpty(p.getProdLabel()) || m.find()){
? ? ? ? ? ? ? ? ? ? response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "商品編號不能為中文且不能為空");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? rightCell = new PdfPCell();
? ? ? ? ? ? ? ? Image codeImage = BarcodeUtil.generateBarcodePrefixSuffix(cb, p.getProdLabel(), 72, 24);
? ? ? ? ? ? ? ? Phrase imageP = new Phrase("", fontChinese);
? ? ? ? ? ? ? ? //自己調(diào)整偏移值 主要是負(fù)值往下
? ? ? ? ? ? ? ? imageP.add(new Chunk(codeImage, 15, -4));
? ? ? ? ? ? ? ? String textNmShow ="商品名稱:" + (StringUtils.isNotEmpty(p.getProdNm()) ? p.getProdNm() : "");
? ? ? ? ? ? ? ? String textUnitShow ="計量單位:" + (StringUtils.isNotEmpty(p.getUnitNm()) ? p.getUnitNm() : "") ;
? ? ? ? ? ? ? ? String textSpecShow ="規(guī)格: " + (StringUtils.isNotEmpty(p.getSpec()) ? p.getSpec() : "");
? ? ? ? ? ? ? ? String textModelAndUnitShow ="型號:" + (StringUtils.isNotEmpty(p.getModel()) ? p.getModel() : "") +
? ? ? ? ? ? ? ? ? ? ? ? " ?" + textUnitShow;
? ? ? ? ? ? ? ? //Chunk chunkCd = new Chunk(textCdShow,fontChinese);
? ? ? ? ? ? ? ? Chunk chunkNm = new Chunk(textNmShow,fontChinese);
? ? ? ? ? ? ? ? //Chunk chunkUnit = new Chunk(textUnitShow,fontChinese);
? ? ? ? ? ? ? ? Chunk chunkSpec = new Chunk(textSpecShow,fontChinese);
? ? ? ? ? ? ? ? Chunk chunkModel = new Chunk(textModelAndUnitShow,fontChinese);
? ? ? ? ? ? ? ? rightCell = new PdfPCell();
? ? ? ? ? ? ? ? //imageP.setLeading(2f,1.5f);
? ? ? ? ? ? ? ? rightCell.addElement(imageP);
? ? ? ? ? ? ? ? //rightCell.addElement(chunkCd);
? ? ? ? ? ? ? ? rightCell.addElement(new Chunk(" ?",fontChinese));
? ? ? ? ? ? ? ? rightCell.addElement(chunkNm);
? ? ? ? ? ? ? ? //rightCell.addElement(chunkUnit);
? ? ? ? ? ? ? ? rightCell.addElement(chunkSpec);
? ? ? ? ? ? ? ? rightCell.addElement(chunkModel);
? ? ? ? ? ? ? ? //false自動換行
? ? ? ? ? ? ? ? rightCell.setNoWrap(false);
? ? ? ? ? ? ? ? //行間距
? ? ? ? ? ? ? ? //rightCell.setLeading(40f,10.0f);
? ? ? ? ? ? ? ? rightCell.setHorizontalAlignment(Element.ALIGN_LEFT);
? ? ? ? ? ? ? ? rightCell.setVerticalAlignment(Element.ALIGN_MIDDLE);
? ? ? ? ? ? ? ? rightCell.setFixedHeight(70.0f);
? ? ? ? ? ? ? ? //rightCell.setPadding(4.0f);//填充
? ? ? ? ? ? ? ? headerTable.addCell(rightCell);
? ? ? ? ? ? }
? ? ? ? ? ? if(productExList.size()%2 ==1){
? ? ? ? ? ? ? ? rightCell = new PdfPCell();
? ? ? ? ? ? ? ? new Chunk("END",fontChinese);
? ? ? ? ? ? ? ? headerTable.addCell(rightCell);
? ? ? ? ? ? }
? ? ? ? ? ? document.add(headerTable);
? ? ? ? ? ? os.flush();
? ? ? ? } catch (DocumentException e) {
? ? ? ? ? ? e.printStackTrace();
? ? ? ? } finally {
? ? ? ? ? ? if(Objects.nonNull(document)){
? ? ? ? ? ? ? ? document.close();
? ? ? ? ? ? }
? ? ? ? ? ? if (Objects.nonNull(os)) {
? ? ? ? ? ? ? ? os.close();
? ? ? ? ? ? }
? ? ? ? }
? ? }

到此這篇關(guān)于Java 批量生成條碼的示例代碼的文章就介紹到這了,更多相關(guān)Java 批量生成條碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用責(zé)任鏈模式優(yōu)化業(yè)務(wù)邏輯中的if-else代碼

    SpringBoot使用責(zé)任鏈模式優(yōu)化業(yè)務(wù)邏輯中的if-else代碼

    在開發(fā)過程中,我們經(jīng)常會遇到需要根據(jù)不同的條件執(zhí)行不同的邏輯的情況,我們可以考慮使用責(zé)任鏈模式來優(yōu)化代碼結(jié)構(gòu),使得代碼更加清晰、可擴(kuò)展和易于維護(hù)
    2023-06-06
  • Springboot整合xxl-job實現(xiàn)動態(tài)傳參

    Springboot整合xxl-job實現(xiàn)動態(tài)傳參

    XXL-JOB是一個分布式任務(wù)調(diào)度平臺,本文主要介紹了Springboot整合xxl-job實現(xiàn)動態(tài)傳參,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • spring中jdbcTemplate.batchUpdate的幾種使用情況

    spring中jdbcTemplate.batchUpdate的幾種使用情況

    本文主要介紹了spring中jdbcTemplate.batchUpdate的幾種使用情況,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • mybatis插入與批量插入返回ID的原理詳解

    mybatis插入與批量插入返回ID的原理詳解

    這篇文章主要給大家介紹了關(guān)于mybatis插入與批量插入返回ID的原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Spring2.5.6開發(fā)環(huán)境搭建圖文教程

    Spring2.5.6開發(fā)環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了Spring2.5.6開發(fā)環(huán)境搭建圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • RocketMQ根據(jù)Tag進(jìn)行消息過濾

    RocketMQ根據(jù)Tag進(jìn)行消息過濾

    消費者訂閱了某個主題后,Apache RocketMQ 會將該主題中的所有消息投遞給消費者。若消費者只需要關(guān)注部分消息,可通過設(shè)置過濾條件在 Apache RocketMQ 服務(wù)端進(jìn)行過濾,只獲取到需要關(guān)注的消息子集,避免接收到大量無效的消息
    2023-02-02
  • java異常處理機制示例(java拋出異常、捕獲、斷言)

    java異常處理機制示例(java拋出異常、捕獲、斷言)

    這篇文章主要介紹了java異常處理機制示例(java拋出異常、捕獲、斷言),需要的朋友可以參考下
    2014-05-05
  • Java與Android使用監(jiān)聽者模式示例

    Java與Android使用監(jiān)聽者模式示例

    這篇文章主要為大家介紹了Java與Android使用監(jiān)聽者模式示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Spring?WebFlux怎么進(jìn)行異常處理源碼解析

    Spring?WebFlux怎么進(jìn)行異常處理源碼解析

    這篇文章主要為大家介紹了Spring?WebFlux怎么進(jìn)行異常處理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • SpringBoot整合jasypt進(jìn)行重要數(shù)據(jù)加密的操作代碼

    SpringBoot整合jasypt進(jìn)行重要數(shù)據(jù)加密的操作代碼

    Jasypt(Java?Simplified?Encryption)是一個專注于簡化Java加密操作的開源工具,它提供了一種簡單而強大的方式來處理數(shù)據(jù)的加密和解密,使開發(fā)者能夠輕松地保護(hù)應(yīng)用程序中的敏感信息,本文給大家介紹了SpringBoot整合jasypt進(jìn)行重要數(shù)據(jù)加密,需要的朋友可以參考下
    2024-05-05

最新評論

上杭县| 蒙山县| 荥阳市| 枣强县| 富裕县| 松阳县| 崇义县| 简阳市| 洪洞县| 蓝田县| 开远市| 木兰县| 芜湖县| 资阳市| 松潘县| 慈溪市| 陆丰市| 鸡东县| 铅山县| 石柱| 洛扎县| 楚雄市| 梁平县| 岑溪市| 阜城县| 衡山县| 万盛区| 萨迦县| 克东县| 扎囊县| 德惠市| 精河县| 宝兴县| 汪清县| 于都县| 甘泉县| 乐昌市| 桦川县| 疏附县| 确山县| 墨玉县|