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

Wkhtmltopdf使用

Wkhtmltopdf使用

  • 1.windows本地使用
  • 2.golang+windows环境使用
  • 3.golang+docker容器中使用

1.windows本地使用

官网地址 https://wkhtmltopdf.org/,直接去里面下载自己想要的版本,这里以windows版本为例

在这里插入图片描述

在这里插入图片描述

2.golang+windows环境使用

1.安装扩展
go get -u github.com/SebastiaanKlippert/go-wkhtmltopdf
2.写一段测试代码
// 写一个测试代码测试一下
package generateFile
import ("github.com/SebastiaanKlippert/go-wkhtmltopdf""strings"
)
func GeneratePDF(title, content string) (res []byte, err error) {content = `<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><style>body { font-family: "Microsoft YaHei", SimSun, sans-serif; }</style>
</head>
<body>
<h1 style="text-align: center;">` + title + `</h1>` + content + `
</body>
</html>`// 创建 PDF 生成器var pdf *wkhtmltopdf.PDFGeneratorpdf, err = wkhtmltopdf.NewPDFGenerator()if err != nil {return}// 从 HTML 字符串创建页面page := wkhtmltopdf.NewPageReader(strings.NewReader(content))// 设置页面选项page.DisableSmartShrinking.Set(true)page.Zoom.Set(1.25)// 将页面添加到生成器pdf.AddPage(page)// 设置全局选项pdf.MarginTop.Set(15)pdf.MarginBottom.Set(15)pdf.MarginLeft.Set(15)pdf.MarginRight.Set(15)pdf.Dpi.Set(300)pdf.Orientation.Set(wkhtmltopdf.OrientationPortrait)pdf.NoPdfCompression.Set(true) // 不压缩PDF以获得更好质量pdf.PageSize.Set(wkhtmltopdf.PageSizeA4)// 生成 PDFerr = pdf.Create()if err != nil {return}res = pdf.Bytes()return
}
 3.apifox调用查看效果

在这里插入图片描述

3.golang+docker容器中使用

1.编写 dockerfile

FROM golang:1.24.2 as builderENV GO111MODULE=on \GOPROXY=https://goproxy.cn,direct \CGO_ENABLED=0 \GOOS=linux \GOARCH=amd64WORKDIR /appCOPY . /appRUN go build -o mainFROM alpine:3.13RUN apk add tzdata
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN apk del tzdataRUN apk add --update --no-cache \libgcc libstdc++ libx11 glib libxrender libxext libintl \ttf-dejavu ttf-droid ttf-freefont ttf-liberation ttf-ubuntu-font-familyCOPY --from=madnight/alpine-wkhtmltopdf-builder:0.12.5-alpine3.10-3660174986 \/bin/wkhtmltopdf /bin/wkhtmltopdfWORKDIR /appCOPY --from=builder /app .//RUN cp /app/assets/fonts/* /usr/share/fonts/TTFEXPOSE 80/tcpCMD ["/app/main"]
2.直接代码里面调用就行了效果一样
http://www.lryc.cn/news/2396495.html

相关文章:

  • ArcGIS Pro 创建渔网格网过大,只有几个格网的解决方案
  • 重学计算机网络之以太网
  • 《深度解构现代云原生微服务架构的七大支柱》
  • 使用SCSS实现随机大小的方块在页面滚动
  • AI 眼镜新纪元:贴片式TF卡与 SOC 芯片的黄金组合破局智能穿戴
  • 论文阅读(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting
  • 算法学习--持续更新
  • Postman 发送 SOAP 请求步骤 归档
  • Python Day39 学习(复习日志Day4)
  • [Python] Python自动化:PyAutoGUI的基本操作
  • 课程介绍:《ReactNative基础与实战指南2025》
  • “候选对话链”(Candidate Dialogue Chain)概念
  • 应急响应靶机-web2-知攻善防实验室
  • comfyui利用 SkyReels-V2直接生成长视频本地部署问题总结 1
  • UV 包管理工具:替代 pip 的现代化解决方案
  • css3 新增属性/滤镜效果/裁剪元素/图片适应盒子/定义和使用变量/恢复默认initial
  • YOLOv8 实战指南:如何实现视频区域内的目标统计与计数
  • matlab实现VMD去噪、SVD去噪,源代码详解
  • SQLite软件架构与实现源代码浅析
  • JAVA实战开源项目:精简博客系统 (Vue+SpringBoot) 附源码
  • Flink SQL 编程详解:从入门到实战难题与解决方案
  • GO+RabbitMQ+Gin+Gorm+docker 部署 demo
  • 通过openpyxl在excel中插入散点图
  • 基于cornerstone3D的dicom影像浏览器 第二十五章 自定义VR调窗工具
  • 针对 Harmony-Cordova 性能优化,涵盖原生插件开发、线程管理和资源加载等关键场景
  • 【SCI论文实现】信息引导的高质量三维重建——系统架构设计 PYTHON
  • 经典面试题:一文了解常见的缓存问题
  • Vue3处理number输入框避免NaN
  • GC1267F:单相全波风扇电机预驱动芯片解析
  • Linux --进程状态