Java 生成「物资出库单」PDF 示例(Template)
Template3 页 A4 · 58 KB
物资出库单表格版式,仓储出库留档。

输出规格
- PDF 页数
- 3
- 图表类型
- Template
- 模板行数
- 462
- 源码行数
- 243
Java 源码 · JQuickBiz95MaterialOutbound.java
以下代码即生成上方 PDF 的完整测试类,可直接复制运行;Maven 依赖见快速开始章节。
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Copyright (c) [2025-2099] Martin ([email protected])
*/
package com.github.paohaijiao.biz.scenario;
import com.github.paohaijiao.config.JPdfConfig;
import com.github.paohaijiao.executor.JQuickPdfFactory;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.Map;
public class JQuickBiz95MaterialOutbound {
private static final String PDF_DIR = "D:/test/pdf/";
private static final String IMG_DIR = "D:/test/image/";
private static final String OUT_FILE = PDF_DIR + "95_material_outbound.pdf";
private static final String TEMPLATE = "report/biz/95_material_outbound.txt";
private static final String SEAL = IMG_DIR + "95_seal.png";
/** 明细数据:编码 / 名称 / 规格 / 单位 / 申请量 / 实发量 / 单价。 */
private static final String[][] ITEMS = {
{"WL-1001", "热轧钢板", "Q235B 6mm×1500×6000", "张", "40", "40", "386.00"},
{"WL-1002", "镀锌钢管", "DN50 × 3.5mm", "m", "260", "260", "28.60"},
{"WL-1003", "角钢", "L50×50×5", "m", "400", "400", "18.40"},
{"WL-1004", "六角螺栓", "M12×60 8.8 级", "套", "2400", "2400", "1.35"},
{"WL-1005", "平垫圈", "M12 镀锌", "个", "5000", "4800", "0.18"},
{"WL-1006", "电焊条", "J422 Φ3.2", "kg", "120", "120", "9.80"},
{"WL-1007", "二氧化碳气体", "40L / 瓶", "瓶", "20", "20", "85.00"},
{"WL-1008", "砂纸", "240 目", "张", "600", "600", "0.65"},
{"WL-1009", "防锈底漆", "环氧富锌 20kg/桶", "桶", "12", "12", "268.00"},
{"WL-1010", "面漆", "丙烯酸聚氨酯 18kg/桶", "桶", "10", "8", "312.00"},
{"WL-1011", "稀释剂", "X-7 15kg/桶", "桶", "6", "6", "146.00"},
{"WL-1012", "安全帽", "ABS 透气型 白色", "顶", "20", "20", "32.00"},
{"WL-1013", "反光背心", "涤纶 荧光黄", "件", "30", "30", "24.50"},
{"WL-1014", "劳保手套", "丁腈涂层", "副", "120", "120", "6.80"},
{"WL-1015", "防护面罩", "焊接专用", "个", "12", "12", "58.00"},
{"WL-1016", "电缆", "YJV22 4×25", "m", "200", "200", "96.50"},
{"WL-1017", "配电箱", "XL-21 户外型", "台", "2", "2", "1860.00"},
{"WL-1018", "LED 投光灯", "200W IP66", "套", "16", "16", "268.00"},
{"WL-1019", "镀锌桥架", "200×100 含盖板", "m", "120", "100", "62.00"},
{"WL-1020", "接线端子", "UK-2.5", "个", "900", "900", "0.95"},
{"WL-1021", "穿线管", "PVC Φ25", "m", "800", "800", "3.60"},
{"WL-1022", "防水胶带", "自粘型 100mm", "卷", "60", "60", "12.80"},
{"WL-1023", "膨胀螺栓", "M10×80", "套", "1200", "1200", "2.10"},
{"WL-1024", "密封胶", "中性硅酮 300ml", "支", "80", "80", "18.50"},
{"WL-1025", "不锈钢焊丝", "ER304 Φ1.2", "kg", "30", "25", "58.00"},
{"WL-1026", "切割片", "Φ100 树脂", "片", "200", "200", "3.20"},
{"WL-1027", "打磨片", "Φ100 百叶", "片", "150", "150", "6.40"},
{"WL-1028", "钢卷尺", "5m 带锁", "把", "10", "10", "22.00"},
{"WL-1029", "水平尺", "600mm 铝合金", "把", "6", "6", "56.00"},
{"WL-1030", "警示带", "红白 50m", "卷", "24", "24", "16.80"}
};
/** 每页(每个分块)明细行数。 */
private static final int ROWS_PER_PAGE = 16;
public static void main(String[] args) throws IOException {
new File(PDF_DIR).mkdirs();
new File(IMG_DIR).mkdirs();
generateSeal(SEAL, "中央仓库");
Map<String, Object> data = new LinkedHashMap<String, Object>();
data.put("orderNo", "CK-2026-03-0417");
data.put("department", "××建工集团 第三工程分公司 机电安装班组");
data.put("project", "××产业园二期 3# 厂房钢结构与机电安装工程");
data.put("warehouse", "××建工集团 中央仓库(A 区)");
data.put("outDate", "2026年3月21日");
data.put("receiver", "钱立");
data.put("issuer", "孙慧");
data.put("approver", "郑守义");
data.put("remark", "部分物资(面漆、平垫圈、桥架、焊丝)库存不足,按实发出,欠发部分已于当日提交补货申请 CG-2026-0091。");
// 明细行 + 分块小计
BigDecimal grandTotal = BigDecimal.ZERO;
BigDecimal blockTotal = BigDecimal.ZERO;
int block = 1;
for (int i = 0; i < ITEMS.length; i++) {
if (i > 0 && i % ROWS_PER_PAGE == 0) {
data.put("subTotal" + block, blockTotal.toPlainString());
grandTotal = grandTotal.add(blockTotal);
blockTotal = BigDecimal.ZERO;
block++;
}
int row = i + 1;
BigDecimal unitPrice = new BigDecimal(ITEMS[i][6]);
int actualQty = Integer.parseInt(ITEMS[i][5]);
int requestQty = Integer.parseInt(ITEMS[i][4]);
BigDecimal amount = unitPrice.multiply(new BigDecimal(actualQty))
.setScale(2, BigDecimal.ROUND_HALF_UP);
blockTotal = blockTotal.add(amount);
boolean shorted = actualQty < requestQty;
String p = "item" + row + "_";
data.put(p + "1", String.valueOf(row));
data.put(p + "2", ITEMS[i][0]);
data.put(p + "3", ITEMS[i][1]);
data.put(p + "4", ITEMS[i][2]);
data.put(p + "5", ITEMS[i][3]);
data.put(p + "6", ITEMS[i][4]);
data.put(p + "6c", shorted ? "#B71C1C" : "#333333");
data.put(p + "6b", shorted ? "true" : "false");
data.put(p + "7", ITEMS[i][5]);
data.put(p + "8", unitPrice.toPlainString());
data.put(p + "9", amount.toPlainString());
}
data.put("subTotal" + block, blockTotal.toPlainString());
grandTotal = grandTotal.add(blockTotal);
data.put("grandTotal", grandTotal.toPlainString());
data.put("amountWords", amountInWords(grandTotal));
JPdfConfig config = new JPdfConfig();
config.getLayoutConfig().setFlexLayout(true);
config.getDoc().setMargins(Arrays.asList(56, 58, 54, 58));
config.getHeaderConfig().setEnabled(true);
config.getHeaderConfig().setText("物资出库单 " + data.get("orderNo"));
config.getHeaderConfig().setFontSize(8);
config.getHeaderConfig().setHeight(32);
config.getFooterConfig().setEnabled(true);
config.getFooterConfig().setFontSize(8);
config.getFooterConfig().setPageNumberFormat("第 %d 页");
JQuickPdfFactory factory = new JQuickPdfFactory(config);
factory.bindAll(data);
byte[] pdf = factory.executeResource(TEMPLATE);
FileOutputStream out = new FileOutputStream(OUT_FILE);
out.write(pdf);
out.close();
System.out.println("已生成:" + OUT_FILE);
}
/**
* 人民币金额大写(到分)。
*/
public static String amountInWords(BigDecimal amount) {
String[] digits = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
String[] units = {"", "拾", "佰", "仟"};
String[] groups = {"", "万", "亿"};
BigDecimal scaled = amount.setScale(2, BigDecimal.ROUND_HALF_UP);
long integer = scaled.longValue();
int fraction = scaled.subtract(new BigDecimal(integer)).movePointRight(2).intValue();
StringBuilder result = new StringBuilder();
if (integer == 0) {
result.append("零");
} else {
String number = String.valueOf(integer);
int groupIndex = 0;
boolean pendingZero = false;
while (number.length() > 0) {
int end = Math.max(0, number.length() - 4);
String group = number.substring(end);
number = number.substring(0, end);
int groupValue = Integer.parseInt(group);
if (groupValue == 0) {
pendingZero = result.length() > 0;
groupIndex++;
continue;
}
if (pendingZero) {
result.insert(0, "零");
pendingZero = false;
}
StringBuilder groupText = new StringBuilder();
char[] cs = group.toCharArray();
boolean zeroFlag = false;
for (int i = 0; i < cs.length; i++) {
int digit = cs[i] - '0';
int power = cs.length - 1 - i;
if (digit == 0) {
zeroFlag = true;
} else {
if (zeroFlag && groupText.length() > 0) {
groupText.append("零");
}
zeroFlag = false;
groupText.append(digits[digit]).append(units[power]);
}
}
result.insert(0, groupText.append(groups[groupIndex]).toString());
groupIndex++;
}
}
result.append("元");
int jiao = fraction / 10;
int fen = fraction % 10;
if (jiao == 0 && fen == 0) {
result.append("整");
} else {
if (jiao > 0) {
result.append(digits[jiao]).append("角");
} else {
result.append("零");
}
if (fen > 0) {
result.append(digits[fen]).append("分");
} else {
result.append("整");
}
}
return result.toString();
}
/** 生成出库专用章。 */
private static void generateSeal(String path, String warehouse) throws IOException {
int size = 200;
BufferedImage image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
Color red = new Color(0xC6, 0x28, 0x28);
g.setColor(red);
g.setStroke(new BasicStroke(6f));
g.drawOval(8, 8, size - 16, size - 16);
g.setFont(new Font("Microsoft YaHei", Font.BOLD, 15));
g.drawString(warehouse, 14, 56);
g.setFont(new Font("Microsoft YaHei", Font.BOLD, 14));
g.drawString("出库专用", 24, size / 2 + 16);
g.setFont(new Font("Microsoft YaHei", Font.PLAIN, 11));
g.drawString("2026-03-21", 44, size / 2 + 34);
g.dispose();
ImageIO.write(image, "png", new File(path));
}
}最小调用(3 行)
不想读完整测试类?核心就是这三行:绑定图表 SVG,执行模板,拿到 PDF 字节流。可直接复制到你的项目里。
// config 可省略;svg 来自 JChartRendererFactory.renderChart(...),见下方完整源码
byte[] pdf = new JQuickPdfFactory(config).executeResource("report/biz/95_material_outbound.txt");模板文件 · 95_material_outbound.txt
类 HTML + 内联 CSS 的模板语法,绑定数据后渲染为 PDF。下方为完整模板,可直接复制,也可下载原始文件。
<pdf>
<body>
<h1 style="fontSize:19pt; bold:true; color:#1A2733; textAlignment:center; characterSpacing:6pt">'物 资 出 库 单'</h1>
<p style="fontSize:9pt; color:#5A6B7C; textAlignment:center; marginBottom:8px">'OUTBOUND ORDER '${orderNo}</p>
// 头部信息
<table style="width:100%; fontSize:9pt; marginBottom:7px">
<tr>
<td style="width:72px; padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'出库单号'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${orderNo}</td>
<td style="width:72px; padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'出库日期'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${outDate}</td>
</tr>
<tr>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'领用部门'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${department}</td>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'领料人'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${receiver}</td>
</tr>
<tr>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'用途'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${project}</td>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'出库仓库'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${warehouse}</td>
</tr>
<tr>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'发放人'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${issuer}</td>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'审批人'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${approver}</td>
</tr>
</table>
<table style="width:100%; fontSize:8pt">
<tr>
<th style="width:24px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'序'</th>
<th style="width:62px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'物资编码'</th>
<th style="width:19%; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'物资名称'</th>
<th style="width:17%; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'规格型号'</th>
<th style="width:30px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'单位'</th>
<th style="width:42px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'申请'</th>
<th style="width:42px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'实发'</th>
<th style="width:50px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'单价'</th>
<th style="padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'金额'</th>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item1_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item1_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item1_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item1_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item1_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item1_6}</td>
<td style="padding:4px; textAlign:right; color:${item1_6c}; bold:${item1_6b}; border:1px solid #C3CDD8">${item1_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item1_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item1_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item2_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item2_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item2_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item2_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item2_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item2_6}</td>
<td style="padding:4px; textAlign:right; color:${item2_6c}; bold:${item2_6b}; border:1px solid #C3CDD8">${item2_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item2_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item2_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item3_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item3_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item3_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item3_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item3_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item3_6}</td>
<td style="padding:4px; textAlign:right; color:${item3_6c}; bold:${item3_6b}; border:1px solid #C3CDD8">${item3_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item3_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item3_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item4_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item4_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item4_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item4_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item4_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item4_6}</td>
<td style="padding:4px; textAlign:right; color:${item4_6c}; bold:${item4_6b}; border:1px solid #C3CDD8">${item4_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item4_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item4_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item5_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item5_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item5_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item5_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item5_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item5_6}</td>
<td style="padding:4px; textAlign:right; color:${item5_6c}; bold:${item5_6b}; border:1px solid #C3CDD8">${item5_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item5_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item5_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item6_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item6_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item6_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item6_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item6_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item6_6}</td>
<td style="padding:4px; textAlign:right; color:${item6_6c}; bold:${item6_6b}; border:1px solid #C3CDD8">${item6_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item6_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item6_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item7_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item7_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item7_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item7_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item7_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item7_6}</td>
<td style="padding:4px; textAlign:right; color:${item7_6c}; bold:${item7_6b}; border:1px solid #C3CDD8">${item7_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item7_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item7_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item8_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item8_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item8_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item8_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item8_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item8_6}</td>
<td style="padding:4px; textAlign:right; color:${item8_6c}; bold:${item8_6b}; border:1px solid #C3CDD8">${item8_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item8_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item8_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item9_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item9_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item9_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item9_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item9_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item9_6}</td>
<td style="padding:4px; textAlign:right; color:${item9_6c}; bold:${item9_6b}; border:1px solid #C3CDD8">${item9_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item9_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item9_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item10_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item10_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item10_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item10_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item10_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item10_6}</td>
<td style="padding:4px; textAlign:right; color:${item10_6c}; bold:${item10_6b}; border:1px solid #C3CDD8">${item10_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item10_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item10_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item11_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item11_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item11_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item11_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item11_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item11_6}</td>
<td style="padding:4px; textAlign:right; color:${item11_6c}; bold:${item11_6b}; border:1px solid #C3CDD8">${item11_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item11_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item11_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item12_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item12_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item12_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item12_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item12_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item12_6}</td>
<td style="padding:4px; textAlign:right; color:${item12_6c}; bold:${item12_6b}; border:1px solid #C3CDD8">${item12_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item12_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item12_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item13_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item13_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item13_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item13_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item13_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item13_6}</td>
<td style="padding:4px; textAlign:right; color:${item13_6c}; bold:${item13_6b}; border:1px solid #C3CDD8">${item13_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item13_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item13_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item14_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item14_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item14_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item14_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item14_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item14_6}</td>
<td style="padding:4px; textAlign:right; color:${item14_6c}; bold:${item14_6b}; border:1px solid #C3CDD8">${item14_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item14_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item14_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item15_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item15_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item15_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item15_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item15_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item15_6}</td>
<td style="padding:4px; textAlign:right; color:${item15_6c}; bold:${item15_6b}; border:1px solid #C3CDD8">${item15_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item15_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item15_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item16_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item16_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item16_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item16_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item16_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item16_6}</td>
<td style="padding:4px; textAlign:right; color:${item16_6c}; bold:${item16_6b}; border:1px solid #C3CDD8">${item16_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item16_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item16_9}</td>
</tr>
<tr>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8; bold:true">'本页小计'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; textAlign:right; border:1px solid #C3CDD8; bold:true; color:#B71C1C">${subTotal1}</td>
</tr>
</table>
<areaBreak></areaBreak>
<p style="fontSize:9pt; color:#5A6B7C; marginBottom:4px">'物资出库单(续) '${orderNo}' 第 2 页 / 共 2 页'</p>
<table style="width:100%; fontSize:8pt">
<tr>
<th style="width:24px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'序'</th>
<th style="width:62px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'物资编码'</th>
<th style="width:19%; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'物资名称'</th>
<th style="width:17%; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'规格型号'</th>
<th style="width:30px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'单位'</th>
<th style="width:42px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'申请'</th>
<th style="width:42px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'实发'</th>
<th style="width:50px; padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'单价'</th>
<th style="padding:5px; backgroundColor:#2E6B4F; color:white; textAlign:center; border:1px solid #2E6B4F">'金额'</th>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item17_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item17_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item17_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item17_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item17_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item17_6}</td>
<td style="padding:4px; textAlign:right; color:${item17_6c}; bold:${item17_6b}; border:1px solid #C3CDD8">${item17_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item17_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item17_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item18_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item18_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item18_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item18_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item18_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item18_6}</td>
<td style="padding:4px; textAlign:right; color:${item18_6c}; bold:${item18_6b}; border:1px solid #C3CDD8">${item18_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item18_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item18_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item19_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item19_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item19_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item19_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item19_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item19_6}</td>
<td style="padding:4px; textAlign:right; color:${item19_6c}; bold:${item19_6b}; border:1px solid #C3CDD8">${item19_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item19_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item19_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item20_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item20_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item20_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item20_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item20_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item20_6}</td>
<td style="padding:4px; textAlign:right; color:${item20_6c}; bold:${item20_6b}; border:1px solid #C3CDD8">${item20_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item20_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item20_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item21_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item21_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item21_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item21_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item21_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item21_6}</td>
<td style="padding:4px; textAlign:right; color:${item21_6c}; bold:${item21_6b}; border:1px solid #C3CDD8">${item21_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item21_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item21_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item22_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item22_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item22_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item22_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item22_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item22_6}</td>
<td style="padding:4px; textAlign:right; color:${item22_6c}; bold:${item22_6b}; border:1px solid #C3CDD8">${item22_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item22_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item22_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item23_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item23_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item23_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item23_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item23_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item23_6}</td>
<td style="padding:4px; textAlign:right; color:${item23_6c}; bold:${item23_6b}; border:1px solid #C3CDD8">${item23_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item23_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item23_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item24_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item24_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item24_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item24_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item24_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item24_6}</td>
<td style="padding:4px; textAlign:right; color:${item24_6c}; bold:${item24_6b}; border:1px solid #C3CDD8">${item24_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item24_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item24_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item25_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item25_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item25_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item25_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item25_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item25_6}</td>
<td style="padding:4px; textAlign:right; color:${item25_6c}; bold:${item25_6b}; border:1px solid #C3CDD8">${item25_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item25_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item25_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item26_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item26_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item26_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item26_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item26_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item26_6}</td>
<td style="padding:4px; textAlign:right; color:${item26_6c}; bold:${item26_6b}; border:1px solid #C3CDD8">${item26_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item26_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item26_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item27_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item27_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item27_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item27_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item27_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item27_6}</td>
<td style="padding:4px; textAlign:right; color:${item27_6c}; bold:${item27_6b}; border:1px solid #C3CDD8">${item27_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item27_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item27_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item28_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item28_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item28_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item28_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item28_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item28_6}</td>
<td style="padding:4px; textAlign:right; color:${item28_6c}; bold:${item28_6b}; border:1px solid #C3CDD8">${item28_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item28_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item28_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item29_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item29_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item29_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item29_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item29_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item29_6}</td>
<td style="padding:4px; textAlign:right; color:${item29_6c}; bold:${item29_6b}; border:1px solid #C3CDD8">${item29_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item29_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item29_9}</td>
</tr>
<tr>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item30_1}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item30_2}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item30_3}</td>
<td style="padding:4px; border:1px solid #C3CDD8">${item30_4}</td>
<td style="padding:4px; textAlign:center; border:1px solid #C3CDD8">${item30_5}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item30_6}</td>
<td style="padding:4px; textAlign:right; color:${item30_6c}; bold:${item30_6b}; border:1px solid #C3CDD8">${item30_7}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item30_8}</td>
<td style="padding:4px; textAlign:right; border:1px solid #C3CDD8">${item30_9}</td>
</tr>
<tr>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8; bold:true">'本页小计'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; border:1px solid #C3CDD8">'—'</td>
<td style="padding:5px; textAlign:right; border:1px solid #C3CDD8; bold:true; color:#B71C1C">${subTotal2}</td>
</tr>
</table>
// 总计
<table style="width:100%; fontSize:9pt; marginTop:8px">
<tr>
<td style="width:76px; padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'出库总金额'</td>
<td style="padding:5px; border:1px solid #C3D8CE; bold:true; color:#B71C1C">'¥'${grandTotal}</td>
</tr>
<tr>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'金额大写'</td>
<td style="padding:5px; border:1px solid #C3D8CE; bold:true">${amountWords}</td>
</tr>
<tr>
<td style="padding:5px; backgroundColor:#E4EFE9; bold:true; border:1px solid #C3D8CE">'备注'</td>
<td style="padding:5px; border:1px solid #C3D8CE">${remark}</td>
</tr>
</table>
// 审批与签字
<div style="display:flex; justifyContent:space-between; marginTop:14px">
<div style="width:31%; borderTop:1px solid #5A6B7C; paddingTop:4px">
<p style="fontSize:9pt; color:#5A6B7C; textAlignment:center">'审批人:'${approver}</p>
<p style="fontSize:8pt; color:#8a939b; textAlignment:center; marginTop:14px">'(签字)'</p>
</div>
<div style="width:31%; borderTop:1px solid #5A6B7C; paddingTop:4px">
<p style="fontSize:9pt; color:#5A6B7C; textAlignment:center">'发放人:'${issuer}</p>
<p style="fontSize:8pt; color:#8a939b; textAlignment:center; marginTop:14px">'(签字)'</p>
</div>
<div style="width:31%; borderTop:1px solid #5A6B7C; paddingTop:4px">
<p style="fontSize:9pt; color:#5A6B7C; textAlignment:center">'领料人:'${receiver}</p>
<p style="fontSize:8pt; color:#8a939b; textAlignment:center; marginTop:14px">'(签字)'</p>
</div>
</div>
// 出库专用章
<div style="display:flex; justifyContent:flex-end; marginTop:4px">
<div style="width:30%; textAlignment:center">
<image src='D:/test/image/95_seal.png' style="width:90px; height:90px"></image>
<p style="fontSize:8pt; color:#5A6B7C">${warehouse}' 出库专用章'</p>
</div>
</div>
<p style="fontSize:7.5pt; color:#8a939b; marginTop:2px">'说明:实发数量少于申请数量的以红色标注,欠发部分由仓库另行安排补发。本单经三方签字后作为库存台账与成本核算依据。'</p>
</body>
</pdf>同分组示例
本页 PDF、预览图、模板与源码均由 JQuick-Pdf 真实运行产出,可自由复制到你的项目中使用。