Configurar el archivo xml de impresión y de análisis
Imprimir cosas, para establecer el tamaño del papel, una variedad de parámetros. Si el proceso de impresión digital para llenar directamente, después del cambio es demasiado problema, un archivo de configuración XML en el que todos los parámetros se imprimen desde aquí.
1. Archivo de construcción printSettings.xml, colocados en los recursos.
<print>
<!-- 打印机设置 -->
<choosePrint>3</choosePrint>
<!-- 打印任务名称 -->
<printName>PDF</printName>
<!-- 打印机选择,为空时选择默认打印机 -->
<defPrintName></defPrintName>
<!-- true:配置生效,false:配置不生效 -->
<isPrint>true</isPrint>
<!-- 二维码尺寸90*90 -->
<qrcodeSize>70</qrcodeSize>
<!--存放二维码的基本地址-->
<basePath>G:\JavaPrintQRCode\</basePath>
<!-- 纸张设置 -->
<paper>
<!-- 打印纸张设置paperWidth,paperHeight -->
<paperWidth>595</paperWidth>
<paperHeight>842</paperHeight>
<!-- 打印区域设置x,y,width,height -->
<x>10</x>
<y>15</y>
<width>580</width>
<height>840</height>
</paper>
<!--条形码参数-->
<tmParameters>
<paperWidth>200</paperWidth>
<paperHeight>150</paperHeight>
<useWidth>180</useWidth>
<useHeight>100</useHeight>
<useX>5</useX>
<useY>10</useY>
<x>20</x>
<y>40</y>
<width>170</width>
<height>50</height>
<path>D:\JavaPrintTmCode\</path>
<titleFontName>宋体</titleFontName>
<titleSize>10</titleSize>
<addressSize>20</addressSize>
<numberSize>10</numberSize>
<companyName>玖陆物流</companyName>
<tmPrintName>Xprinter XP-365B</tmPrintName>
<!--<tmPrintName>360</tmPrintName>-->
</tmParameters>
<!-- 打印数据参数设置 -->
<dataset>
<data x="5" y="30" name="startAddress" cellWidth="" cellHeight="" font="宋体" size="16"/>
<datas name="appGoodsOrder" type="">
<data x="110" y="110" name="goodsName" />
<data x="205" y="110" name="goodsPkgs" />
<data x="295" y="110" name="goodsPackage" />
</datas>
<!--费用格式-->
<datas name="appFeeOrder" type="">
<data x="70" y="230" name="feeText" />
</datas>
<table x="" y="" width="" height="">
<tr width="" height="">
<td width="" height="" colspan="" rowspan="" ></td>
<td width="" height=""></td>
</tr>
</table>
</dataset>
</print>
Una vez establecido, el alt archivo pom de prensa + Insert Incorporated Maven dependientes
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
Deje entidades nodo constituyentes. Así que ayuda a valorar durante la impresión. Aquí está mi estructura física de arriba hacia abajo gradualmente.
clase PrintSettings que es la capa más superior. Al añadir notas, puede haber nombres duplicados, tenemos que añadir una anotación @XmlTransient, por lo que sólo tiene que buscar la presencia o ausencia de notas repetidas en las entidades @XmlRootElement, independientemente de los otros tipos de variables. Mostrar la mayor parte de la parte superior y seguido el orden.
package com.cargo.order.settings;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.xml.bind.annotation.*;
/**
*打印设置POJO
* @since 2020/3/25 8:46
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement(name = "print")
@XmlAccessorType(XmlAccessType.FIELD)
public class PrintSettings {
@XmlElement(name = "choosePrint")
private String choosePrint;
@XmlElement(name = "printName")
private String printName;
@XmlElement(name = "isPrint")
private Boolean isPrint;
@XmlElement(name = "qrcodeSize")
private Integer qrcodeSize;
@XmlElement(name = "basePath")
private String basePath;
@XmlElement(name = "paper")
private Paper paper;
@XmlElement(name = "dataset")
private DataSet dataSet;
@XmlElement(name = "tmParameters")
private TmParameters tmParameters;
public TmParameters getTmParameters() {
return tmParameters;
}
public void setTmParameters(TmParameters tmParameters) {
this.tmParameters = tmParameters;
}
public String getChoosePrint() {
return choosePrint;
}
public void setChoosePrint(String choosePrint) {
this.choosePrint = choosePrint;
}
public String getPrintName() {
return printName;
}
public void setPrintName(String printName) {
this.printName = printName;
}
public Boolean getPrint() {
return isPrint;
}
public void setPrint(Boolean print) {
isPrint = print;
}
public Integer getQrcodeSize() {
return qrcodeSize;
}
public void setQrcodeSize(Integer qrcodeSize) {
this.qrcodeSize = qrcodeSize;
}
public Paper getPaper() {
return paper;
}
public void setPaper(Paper paper) {
this.paper = paper;
}
public DataSet getDataSet() {
return dataSet;
}
public void setDataSet(DataSet dataSet) {
this.dataSet = dataSet;
}
public String getBasePath() {
return basePath;
}
public void setBasePath(String basePath) {
this.basePath = basePath;
}
}
A continuación, mostrar cómo las entidades de papel.
package com.cargo.order.settings;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
@Data
@AllArgsConstructor
@NoArgsConstructor
@XmlRootElement(name = "paper")
public class Paper {
@XmlElement(name = "paperWidth")
private Integer paperWidth;
@XmlElement(name = "paperHeight")
private Integer paperHeight;
@XmlElement(name = "x")
private Integer x;
@XmlElement(name = "y")
private Integer y;
@XmlElement(name = "width")
private Integer width;
@XmlElement(name = "height")
private Integer height;
@XmlTransient
public Integer getPaperWidth() {
return paperWidth;
}
public void setPaperWidth(Integer paperWidth) {
this.paperWidth = paperWidth;
}
@XmlTransient
public Integer getPaperHeight() {
return paperHeight;
}
public void setPaperHeight(Integer paperHeight) {
this.paperHeight = paperHeight;
}
@XmlTransient
public Integer getX() {
return x;
}
public void setX(Integer x) {
this.x = x;
}
@XmlTransient
public Integer getY() {
return y;
}
public void setY(Integer y) {
this.y = y;
}
@XmlTransient
public Integer getWidth() {
return width;
}
public void setWidth(Integer width) {
this.width = width;
}
@XmlTransient
public Integer getHeight() {
return height;
}
public void setHeight(Integer height) {
this.height = height;
}
}
Cuando el uso directo de bloque estático de código, una vez cargado, el uso, tales como:
private static PrintSettings printSettings;
static {
try {
//读取Resource目录下的XML文件
Resource resource = new ClassPathResource("printSettings.xml");
//利用输入流获取XML文件内容
BufferedReader br = new BufferedReader(new InputStreamReader(resource.getInputStream(), "UTF-8"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
buffer.append(line);
}
br.close();
//XML转为JAVA对象
PrintSettings settings = (PrintSettings) XmlBuilder.xmlStrToObject(PrintSettings.class, buffer.toString());
printSettings = settings;
}catch (Exception e){
logger.error("异常",e);
}
}
Este archivo XML configurado, también se puede utilizar.
Código se ha cargado en git EE