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) } }