浏览代码

入库单打印

wangxin 4 周之前
父节点
当前提交
a80d77796b

+ 26 - 0
src/main/java/cn/ezhizao/common/utils/PdfUtil.java

@@ -91,4 +91,30 @@ public class PdfUtil {
         }
         }
         return outputStream.toByteArray();
         return outputStream.toByteArray();
     }
     }
+
+    public static byte[] html3Pdf(String content) {
+        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+        try {
+            ConverterProperties converterProperties = new ConverterProperties();
+            converterProperties.setCharset("UTF-8");
+            FontProvider fontProvider = new FontProvider();
+            PdfFont simsun = PdfFontFactory.createFont(FontProgramFactory.createFont("simsun.ttc", 1, false));
+            fontProvider.addFont(simsun.getFontProgram());
+            fontProvider.addSystemFonts();
+            converterProperties.setFontProvider(fontProvider);
+            //设置pdf纸张
+            PdfWriter writer = new PdfWriter(outputStream);
+            PdfDocument pdf = new PdfDocument(writer);
+            pdf.setTagged();
+            //设置纸张的大小,并且设置默认的pdf大小
+            PageSize pageSize = new PageSize(211f / 72 * 25.4f, 93f / 72 * 25.4f);
+//            PageSize pageSize = new PageSize(241f,140f);
+
+            pdf.setDefaultPageSize(pageSize);
+            HtmlConverter.convertToPdf(content,pdf,converterProperties);
+        } catch (Exception e) {
+            System.out.print("生成 PDF 失败,{}"+e);
+        }
+        return outputStream.toByteArray();
+    }
 }
 }

+ 1 - 1
src/main/java/cn/ezhizao/project/business/controller/BizInboundOrderController.java

@@ -417,7 +417,7 @@ public class BizInboundOrderController extends BaseController {
         response.setContentType("application/pdf");
         response.setContentType("application/pdf");
         String fileName = "产品入库单";
         String fileName = "产品入库单";
         response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes()));
         response.setHeader("Content-Disposition", "filename=" + new String(fileName.getBytes()));
-        byte[] resources = PdfUtil.html2Pdf(templateContent);
+        byte[] resources = PdfUtil.html3Pdf(templateContent);
         ServletOutputStream outputStream = response.getOutputStream();
         ServletOutputStream outputStream = response.getOutputStream();
         outputStream.write(resources);
         outputStream.write(resources);
         outputStream.close();
         outputStream.close();

+ 45 - 43
src/main/resources/templates/inboundOrderPdf.html

@@ -5,7 +5,7 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <style>
     <style>
         @page {
         @page {
-            margin: 30pt 30pt 20pt 10pt;
+            margin: 30px 20px 20px 10px;
             size: 210mm 93mm;
             size: 210mm 93mm;
         }
         }
 
 
@@ -13,19 +13,21 @@
             font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;
             font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;
             -webkit-font-smoothing: antialiased;
             -webkit-font-smoothing: antialiased;
             -moz-osx-font-smoothing: grayscale;
             -moz-osx-font-smoothing: grayscale;
+            color-adjust: exact;
+            -webkit-print-color-adjust: exact;
         }
         }
 
 
         table {
         table {
             width: 100%;
             width: 100%;
             border-collapse: collapse;
             border-collapse: collapse;
-            font-size: 10pt;
+            font-size: 10px;
             table-layout:fixed;
             table-layout:fixed;
         }
         }
 
 
         th, td {
         th, td {
             text-align: center;
             text-align: center;
-            padding: 2pt;
-            border: 1pt solid #000;
+            padding: 2px;
+            border: 1px solid #000;
         }
         }
 
 
         .total-row {
         .total-row {
@@ -39,25 +41,25 @@
         .left-align { text-align: left; }
         .left-align { text-align: left; }
 
 
         .right-align1 {
         .right-align1 {
-            font-size: 12pt;
+            font-size: 12px;
             margin-left: auto;
             margin-left: auto;
-            padding-right: 110pt;
+            padding-right: 110px;
         }
         }
         .center-align1 {
         .center-align1 {
-            font-size: 13pt;
-            padding-right: 90pt;
+            font-size: 13px;
+            padding-right: 90px;
         }
         }
         .left-align1 {
         .left-align1 {
-            font-size: 14pt;
-            margin-right: 5pt;
+            font-size: 14px;
+            margin-right: 5px;
         }
         }
         .title-row {
         .title-row {
-            font-size: 13pt ;
+            font-size: 13px ;
             display: flex;
             display: flex;
             justify-content: space-between; /* 元素之间的间距均匀分布 */
             justify-content: space-between; /* 元素之间的间距均匀分布 */
             align-items: center; /* 垂直居中对齐 */
             align-items: center; /* 垂直居中对齐 */
             width: 100%; /* 确保标题行占满整个容器宽度 */
             width: 100%; /* 确保标题行占满整个容器宽度 */
-            /*margin-bottom: 10pt; !* 根据需要调整间距 *!*/
+            /*margin-bottom: 10px; !* 根据需要调整间距 *!*/
         }
         }
 
 
         .title-row div {
         .title-row div {
@@ -72,54 +74,54 @@
 
 
 <!-- 标题行 -->
 <!-- 标题行 -->
 <div class="title-row">
 <div class="title-row">
-    <div class="right-align1" style=" font-size: 12pt ; margin-left: 5pt;padding-right: 40pt ">
+    <div class="right-align1" style=" font-size: 14px ; margin-left: 5px;padding-right: 40px ">
         厂别: <#if inboundOrder.tenantName??>${inboundOrder.tenantName} </#if>
         厂别: <#if inboundOrder.tenantName??>${inboundOrder.tenantName} </#if>
     </div>
     </div>
-    <div class="right-align1" style=" font-size: 12pt ; margin-left: 5pt;padding-right: 65pt;">包装形式: ${inboundOrder.packageType} </div>
-    <div class="center-align1"  style="font-size: 14pt ;padding-right: 90pt; font-weight: 600;">大连德迈仕精密科技股份有限公司</div>
-    <div class="left-align1"  style=" font-size: 12pt ;font-weight: 600;">入库单号:${inboundOrder.inboundNumber}</div>
+    <div class="right-align1" style=" font-size: 14px ; margin-left: 5px;padding-right: 65px;">包装形式: ${inboundOrder.packageType} </div>
+    <div class="center-align1"  style="font-size: 16px ;padding-right: 90px; font-weight: 600;">大连德迈仕精密科技股份有限公司</div>
+    <div class="left-align1"  style=" font-size: 14px ;font-weight: 600;">入库单号:${inboundOrder.inboundNumber}</div>
 </div>
 </div>
 <!-- 标题行 -->
 <!-- 标题行 -->
-<div class="title-row" style="margin-top: 3pt ; font-size: 12pt ;">
-    <div class="right-align" style="margin-left: 5pt; padding-right:220pt;" >部门:${inboundOrder.deptCode} ${inboundOrder.deptName}</div>
-    <div class="center-align" style="font-size: 12pt ; padding-right: 210pt; font-weight: 600;">产成品入库单</div>
-    <div class="left-align" style="margin-right: 5pt">第${detail_index+1}页 共 ${inboundOrder.detailLists?size}页</div>
+<div class="title-row" style="margin-top: 3px ; font-size: 14px ;">
+    <div class="right-align" style="margin-left: 5px; padding-right:220px;" >部门:${inboundOrder.deptCode} ${inboundOrder.deptName}</div>
+    <div class="center-align" style="font-size: 14px ; padding-right: 210px; font-weight: 600;">产成品入库单</div>
+    <div class="left-align" style="margin-right: 5px">第${detail_index+1}页 共 ${inboundOrder.detailLists?size}页</div>
 </div>
 </div>
-<div class="title-row" style="margin-top: 3pt ; font-size: 10pt ;">
-    <div class="right-align" style="margin-left: 5pt;">客户: ${ inboundOrder.companyCode  } ${ inboundOrder.companyAlias} </div>
-    <div class="left-align" style="margin-left: 258pt;">单据日期: ${inboundOrder.inboundDateStr } </div>
-    <div class="left-align" style="margin-left: 103pt;">CDMS/JH-1-019</div>
+<div class="title-row" style="margin-top: 3px ; font-size: 12px ;">
+    <div class="right-align" style="margin-left: 5px;">客户: ${ inboundOrder.companyCode  } ${ inboundOrder.companyAlias} </div>
+    <div class="left-align" style="margin-left: 258px;">单据日期: ${inboundOrder.inboundDateStr } </div>
+    <div class="left-align" style="margin-left: 103px;">CDMS/JH-1-019</div>
 </div>
 </div>
-<div class="title-row" style="margin-top: 3pt ; font-size: 12pt ;">
-    <div class="right-align" style="margin-left: 5pt;">图号: ${ inboundOrder.drawingNo }</div>
-    <div class="center-align" style="margin-left: 150pt;">规格: ${ inboundOrder.standard }</div>
-    <div class="left-align" style="margin-left: 30pt;">产品编码: ${ inboundOrder.productCode }</div>
-    <div class="left-align" style="margin-left: 30pt;">箱数: ${ inboundOrder.boxNumber }</div>
+<div class="title-row" style="margin-top: 3px ; font-size: 12px ;">
+    <div class="right-align" style="margin-left: 5px;">图号: ${ inboundOrder.drawingNo }</div>
+    <div class="center-align" style="margin-left: 150px;">规格: ${ inboundOrder.standard }</div>
+    <div class="left-align" style="margin-left: 30px;">产品编码: ${ inboundOrder.productCode }</div>
+    <div class="left-align" style="margin-left: 30px;">箱数: ${ inboundOrder.boxNumber }</div>
 </div>
 </div>
 <table>
 <table>
     <!-- 第三行 -->
     <!-- 第三行 -->
     <tr>
     <tr>
-        <td style="width: 12pt;">序号</td>
-        <td style="width: 60pt;">批号</td>
-        <td style="width: 25pt;">数量(支)</td>
-        <td style="width: 180pt;">备注/客户批号/箱号等信息</td>
+        <td style="width: 12px;">序号</td>
+        <td style="width: 60px;">批号</td>
+        <td style="width: 20px;">数量(支)</td>
+        <td style="width: 180px;">备注/客户批号/箱号等信息</td>
     </tr>
     </tr>
 
 
     <!-- 动态数据行 -->
     <!-- 动态数据行 -->
     <#list detail as item>
     <#list detail as item>
     <tr>
     <tr>
-        <td style="width: 14pt;">${ item_index + 1 }</td>
-        <td style="width: 60pt;"  >
+        <td style="width: 14px;">${ item_index + 1 }</td>
+        <td style="width: 60px;"  >
             <#if item.lotCode??>
             <#if item.lotCode??>
                 ${ item.lotCode }
                 ${ item.lotCode }
             </#if>
             </#if>
         </td>
         </td>
-        <td style="width: 20pt;text-align: right;" >
+        <td style="width: 20px;text-align: right;" >
             <#if item.inboundNum??>
             <#if item.inboundNum??>
                 ${ item.inboundNum }
                 ${ item.inboundNum }
         </#if>
         </#if>
         </td>
         </td>
-        <td style="width: 180pt;" >
+        <td style="width: 180px;" >
             <#if item.remark??>
             <#if item.remark??>
                 ${ item.remark }
                 ${ item.remark }
             <#else>
             <#else>
@@ -136,12 +138,12 @@
     <td>支</td>
     <td>支</td>
 </tr>
 </tr>
 </table>
 </table>
-<div class="title-row"  style="margin-bottom: 5pt;font-size: 12pt ;">
-    <!--    <div  style=" height: 25pt"></div>-->
-    <div class="center-align"  style="margin-left: 60pt;padding-right: 48pt">保管员:${inboundOrder.storageNickName}</div>
-    <div class="center-align"  style="margin-left: 60pt;padding-right: 78pt">搬运员:</div>
-    <div class="center-align" style="margin-left: 60pt;padding-right: 78pt">录入员:${inboundOrder.inputNickName}</div>
-    <div class="left-align" style="margin-right: 15pt">白-库房, 红-财务, 黄-存根</div>
+<div class="title-row"  style="margin-bottom: 5px;font-size: 12px ;">
+    <!--    <div  style=" height: 25px"></div>-->
+    <div class="center-align"  style="margin-left: 60px;padding-right: 48px">保管员:${inboundOrder.storageNickName}</div>
+    <div class="center-align"  style="margin-left: 60px;padding-right: 78px">搬运员:</div>
+    <div class="center-align" style="margin-left: 60px;padding-right: 78px">录入员:${inboundOrder.inputNickName}</div>
+    <div class="left-align" style="margin-right: 15px">白-库房, 红-财务, 黄-存根</div>
 </div>
 </div>
 </body>
 </body>
 </#list>
 </#list>