当前位置: 首页 > news >正文

go libreoffice word 转pdf

一、main.go 关键代码

完整代码

 

package mainimport ("fmt""github.com/jmoiron/sqlx""github.com/tealeg/xlsx""log""os/exec""path/filepath"
)
import _ "github.com/go-sql-driver/mysql"import "net/http"
import "encoding/json"
import "io/ioutil"
import "github.com/google/uuid"type Student struct {Name stringSex  string
}type ResponseData struct {Status  string `json:"status"`Message string `json:"message"`
}func (student Student) show() {fmt.Printf("Name:%s Sex:%s\r\n", student.Name, student.Sex)
}
func uploadFile(w http.ResponseWriter, r *http.Request) {w.Header().Set("Content-Type", "application/json")r.ParseMultipartForm(32 << 20) // 设置最大内存为32MBfile, handler, err := r.FormFile("file")if err != nil {http.Error(w, err.Error(), http.StatusBadRequest)return}defer file.Close()data, err := ioutil.ReadAll(file)if err != nil {http.Error(w, err.Error(), http.StatusInternalServerError)return}ext := filepath.Ext(handler.Filename)// 这里可以将文件数据保存到服务器err2 := ioutil.WriteFile(uuid.NewString()+ext, data, 0644)if err2 != nil {return}response := ResponseData{Status:  "success",Message: "Hello, this is a JSON response",}jsonResponse, err3 := json.Marshal(response)if err3 != nil {http.Error(w, err3.Error(), http.StatusInternalServerError)return}w.Write(jsonResponse)
}func convertToPDF(inputFile, outputFile string) {cmd := exec.Command("libreoffice", "--headless", "--convert-to", "pdf", inputFile, "--outdir", outputFile)err := cmd.Run()if err != nil {log.Fatal("转换失败:", err)}log.Println("转换成功!")
}func main() {inputFile := "/root/doc1.docx"outputFile := "/root/output/"convertToPDF(inputFile, outputFile)http.HandleFunc("/upload", uploadFile)http.ListenAndServe("0.0.0.0:5000", nil)
}
func saveexcel() {excelPath := "students.xlsx"xlFile, err := xlsx.OpenFile(excelPath)if err != nil {fmt.Printf("Error opening Excel file: %s\n", err)return}sheet := xlFile.Sheets[0]var students []Studenti := 0for _, row := range sheet.Rows {name := row.Cells[0].String()sex := row.Cells[1].String()fmt.Printf("name:%s sex:%s \r\n", name, sex)students = append(students, Student{Name: name, Sex: sex})i++}for _, student := range students {student.show()}fmt.Println("数据库操作")dsn := "root:123456@tcp(192.168.31.132:3306)/demo"db, err := sqlx.Open("mysql", dsn)if err != nil {log.Fatal(err)}for i, student := range students {if i == 0 {continue}db.NamedExec("insert into students(Name,Sex) values(:name,:sex)", student)}var studentMaps []*Studenterr = db.Select(&studentMaps, `select name,sex from students where name=?`, "张三")if err != nil {log.Fatal(err)}for _, student := range studentMaps {student.show()}
}

二、运行效果:

http://www.lryc.cn/news/448744.html

相关文章:

  • 打造双模兼容npm包:无缝支持require与import
  • 便捷将屏幕投射到安卓/iOS设备-屏幕投射到安卓/iOS设备,Windows/Mac电脑或智能电视上-供大家学习研究参考
  • yolox训练自己的数据集
  • Centos8.5.2111(1)之本地yum源搭建和docker部署与网络配置
  • 基于SSM+小程序的自习室选座与门禁管理系统(自习室1)(源码+sql脚本+视频导入教程+文档)
  • 支付宝远程收款api之小荷包跳转码
  • STM32 F1移植FATFS文件系统 USMART组件测试相关函数功能
  • YOLOv8改进 | 融合篇,YOLOv8主干网络替换为MobileNetV3+CA注意机制+添加小目标检测层(全网独家首发,实现极限涨点)
  • 深入探索机器学习中的目标分类算法
  • 一文上手SpringSecurity【七】
  • 深圳龙链科技:全球区块链开发先锋,领航Web3生态未来
  • 手写代码,利用 mnist 数据集测试对比 kan 和 cnn/mlp 的效果
  • 基于Java+SQL Server2008开发的(CS界面)个人财物管理系统
  • 15年408计算机网络
  • C++ const关键字
  • python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)
  • LeetCode416:分割等和子集
  • 自定义异常注解处理框架
  • 【小程序】微信小程序课程 -3 快速上手之常用方法
  • iOS 小组件
  • 【2.使用VBA自动填充Excel工作表】
  • 算法记录——链表
  • EasyExcel实现百万数据批量导出
  • 兆易GD32E508的SHRTIM配置 主从定时器 产生2对相位可调互补PWM 带死区
  • 数据归组工具
  • JavaScript 中的闭包的形成及使用场景
  • 后端返回内容有换行标识,前端如何识别换行
  • 服务器被挂马,导致网站首页被更改怎么解决
  • Android 利用OSMdroid开发GIS
  • 一文上手skywalking【上】