103 lines
2.0 KiB
Go
Raw Normal View History

2025-02-19 10:48:41 +08:00
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)
}
}