103 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package main
 | |
| 
 | |
| import (
 | |
| 	"bytes"
 | |
| 	"fmt"
 | |
| 	"github.com/jung-kurt/gofpdf"
 | |
| 	"log"
 | |
| 	"net"
 | |
| 	"os/exec"
 | |
| 	"strings"
 | |
| )
 | |
| 
 | |
| func printPDF() {
 | |
| 	cmd := exec.Command("powershell", "-ExecutionPolicy", "Bypass", "-File", "./print.ps1")
 | |
| 	var out bytes.Buffer
 | |
| 	var stderr bytes.Buffer
 | |
| 	cmd.Stdout = &out
 | |
| 	cmd.Stderr = &stderr
 | |
| 
 | |
| 	// 运行命令
 | |
| 	err := cmd.Run()
 | |
| 	if err != nil {
 | |
| 		fmt.Println(fmt.Sprint(err) + ": " + stderr.String())
 | |
| 		return
 | |
| 	}
 | |
| 	fmt.Println("Output:", out.String())
 | |
| }
 | |
| 
 | |
| func generatePDF(num string) {
 | |
| 	args := strings.Split(num, ",")
 | |
| 	pdf := gofpdf.NewCustom(&gofpdf.InitType{
 | |
| 		OrientationStr: "P",
 | |
| 		UnitStr:        "mm",
 | |
| 		SizeStr:        "A4",
 | |
| 		Size: gofpdf.SizeType{
 | |
| 			Wd: 80,
 | |
| 			Ht: 100,
 | |
| 		},
 | |
| 		FontDirStr: "",
 | |
| 	})
 | |
| 	pdf.AddUTF8Font("simhei", "", "./simhei.ttf")
 | |
| 
 | |
| 	pdf.AddPage()
 | |
| 	pdf.SetFont("simhei", "", 24)
 | |
| 	pdf.SetXY(0, 0)
 | |
| 	pdf.CellFormat(60, 50, args[0], "", 0, "C", false, 0, "")
 | |
| 	pdf.SetFont("simhei", "", 100)
 | |
| 	pdf.SetXY(0, 25)
 | |
| 	pdf.CellFormat(60, 50, args[1], "", 0, "C", false, 0, "")
 | |
| 	err := pdf.OutputFileAndClose("./test.pdf")
 | |
| 	if err != nil {
 | |
| 		log.Fatalf("Failed to save PDF: %v", err)
 | |
| 	}
 | |
| 	fmt.Println("generate pdf success")
 | |
| }
 | |
| 
 | |
| func handleConnection(conn net.Conn) {
 | |
| 	log.Printf("receive connection: %v", conn.RemoteAddr())
 | |
| 	defer func(conn net.Conn) {
 | |
| 		err := conn.Close()
 | |
| 		if err != nil {
 | |
| 			log.Fatalln(err)
 | |
| 		}
 | |
| 	}(conn)
 | |
| 
 | |
| 	for {
 | |
| 		buf := make([]byte, 1024)
 | |
| 		n, err := conn.Read(buf)
 | |
| 
 | |
| 		if err != nil {
 | |
| 			fmt.Println("服务器端的read err=", err)
 | |
| 			return
 | |
| 		}
 | |
| 		generatePDF(string(buf[:n]))
 | |
| 		printPDF()
 | |
| 		fmt.Printf("onMessage %s \n", string(buf[:n]))
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func main() {
 | |
| 	listener, err := net.Listen("tcp", ":8080")
 | |
| 	if err != nil {
 | |
| 		log.Fatalf("Failed to start server: %v", err)
 | |
| 	}
 | |
| 	defer func(listener net.Listener) {
 | |
| 		err := listener.Close()
 | |
| 		if err != nil {
 | |
| 			log.Fatalln(err)
 | |
| 		}
 | |
| 	}(listener)
 | |
| 
 | |
| 	log.Println("Server started on :8080")
 | |
| 
 | |
| 	for {
 | |
| 		conn, err := listener.Accept()
 | |
| 		if err != nil {
 | |
| 			log.Printf("Failed to accept connection: %v", err)
 | |
| 			continue
 | |
| 		}
 | |
| 		go handleConnection(conn)
 | |
| 	}
 | |
| }
 |