使用walk,可以选择图片文件,转换为pdf文件,打包命令:go build -ldflags="-H windowsgui"
package main
import (
"fmt"
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative"
"github.com/signintech/gopdf"
_ "github.com/signintech/gopdf"
"os"
)
type MyMainWindow struct {
*walk.MainWindow
edit *walk.TextEdit
view *walk.ImageView
}
func main() {
mw := &MyMainWindow{}
err := MainWindow{
AssignTo: &mw.MainWindow,
Icon: "favicon.ico",
Title: "wjdsg--图片转PDF",
MinSize: Size{Width: 100, Height: 100},
Size: Size{Width: 300, Height: 400},
Layout: VBox{},
Children: []Widget{
ImageView{
AssignTo: &mw.view,
},
TextEdit{
AssignTo: &mw.edit,
MaxSize: Size{
Width: 20,
Height: 20,
},
Name: "请选择文件",
Enabled: false,
},
PushButton{
Text: "打开",
OnClicked: mw.selectFile,
},
PushButton{
Text: "转换",
OnClicked: mw.toPdf,
},
},
}.Create() //创建
if err != nil {
fmt.Println(err)
}
mw.Run()
}
func (mw *MyMainWindow) selectFile() {
dlg := new(walk.FileDialog)
dlg.Title = "选择文件"
dlg.Filter = "jpg文件 (*.jpg)|*.jpg"
mw.view.SetImage(nil)
mw.edit.SetText("")
if ok, err := dlg.ShowOpen(mw); err != nil {
return
} else if !ok {
return
}
path := dlg.FilePath
fromFile, _ := walk.NewImageFromFileForDPI(path, 400)
mw.view.SetImage(fromFile)
mw.edit.SetText(path)
mw.edit.SetEnabled(false)
}
func (mw *MyMainWindow) toPdf() {
data := mw.edit.Text()
dlg := new(walk.FileDialog)
dlg.Title = "保存到"
dlg.Filter = "PDF文件 (*.pdf)"
dlg.ShowSave(mw)
file, _ := os.Open(data)
defer file.Close()
openFile, _ := os.OpenFile(dlg.FilePath+".pdf", os.O_WRONLY|os.O_CREATE, os.ModePerm)
pdf := gopdf.GoPdf{}
pdf.Start(gopdf.Config{PageSize: *gopdf.PageSizeA3})
pdf.AddPage()
pdf.Image(data, 30, 40, nil)
pdf.SetXY(250, 200)
pdf.Write(openFile)
mw.edit.SetText("转换成功!请选择文件")
mw.view.SetImage(nil)
}