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