springboot del billete de impresión java -3

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. Avati

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

Supongo que te gusta

Origin www.cnblogs.com/Choleen/p/12585346.html
Recomendado
Clasificación