知识点:
生成PDF文档
本课内容:
大家好,欢迎来到谷雨课堂,
PDF文档是行业软件开发中常用到的文档格式,
因其打印内容标准、跨平台,
故而在很多软件中都会生成PDF文档进行数据交换,
比如准考证、工资条打印等。
那么今天,谷雨老师就用Go来进行PDF文档的在线生成,
并且文档支持中文。
package main
import (
"fmt"
"github.com/tiechui1994/gopdf"
"github.com/tiechui1994/gopdf/core"
)
const (
TABLE_IG = "IPAexG"
TABLE_MD = "MPBOLD"
TABLE_MY = "微软雅黑"
)
func SimpleTable() {
r := core.CreateReport()
font1 := core.FontMap{
FontName: TABLE_IG,
FileName: "ttf//ipaexg.ttf",
}
font2 := core.FontMap{
FontName: TABLE_MD,
FileName: "ttf//mplus-1p-bold.ttf",
}
font3 := core.FontMap{
FontName: TABLE_MY,
FileName: "ttf//microsoft.ttf",
}
r.SetFonts([]*core.FontMap{&font1, &font2, &font3})
r.SetPage("A4", "P")
r.RegisterExecutor(core.Executor(SimpleTableExecutor), core.Detail)
r.Execute("谷雨课堂.pdf")
fmt.Println(r.GetCurrentPageNo())
}
func SimpleTableExecutor(report *core.Report) {
lineSpace := 1.0
lineHeight := 18.0
table := gopdf.NewTable(5, 100, 415, lineHeight, report)
table.SetMargin(core.Scope{})
// 先把当前的行设置完毕, 然后才能添加单元格内容.
c00 := table.NewCellByRange(1, 1)
c01 := table.NewCellByRange(2, 1)
c03 := table.NewCellByRange(2, 2)
c10 := table.NewCellByRange(3, 1)
f1 := core.Font{Family: TABLE_MY, Size: 15, Style: ""}
border := core.NewScope(4.0, 4.0, 4.0, 3.0)
c00.SetElement(gopdf.NewTextCell(table.GetColWidth(0, 0), lineHeight, lineSpace, report).SetFont(f1).SetBorder(border).HorizontalCentered().SetContent("0-0"))
c01.SetElement(gopdf.NewTextCell(table.GetColWidth(0, 1), lineHeight, lineSpace, report).SetFont(f1).SetBorder(border).RightAlign().SetContent("0-1"))
c03.SetElement(gopdf.NewTextCell(table.GetColWidth(0, 3), lineHeight, lineSpace, report).SetFont(f1).SetBorder(border).RightAlign().SetContent("0-3谷雨课堂每周定期、免费向广大同学们推送前沿编程相关知识,内容也将同步到各大社交平台,供同学们学习,共同进步。"))
c10.SetElement(gopdf.NewTextCell(table.GetColWidth(1, 0), lineHeight, lineSpace, report).SetFont(f1).SetBorder(border).VerticalCentered().SetContent("1-0谷雨课堂每周定期、免费向广大同学们推送前沿编程相关知识,内容也将同步到各大社交平台,供同学们学习,共同进步。"))
f1 = core.Font{Family: TABLE_MY, Size: 10}
border = core.NewScope(4.0, 4.0, 0, 0)
for i := 0; i < 98; i++ {
cells := make([]*gopdf.TableCell, 5)
for j := 0; j < 5; j++ {
cells[j] = table.NewCell()
}
for j := 0; j < 5; j++ {
str := `谷雨课堂666`
s := fmt.Sprintf("%v-%v", i+2, str)
w := table.GetColWidth(i+2, j)
e := gopdf.NewTextCell(w, lineHeight, lineSpace, report)
e.SetFont(f1)
if i%2 == 0 {
e.SetBackColor("255,192,203")
}
e.SetBorder(border)
e.SetContent(s)
cells[j].SetElement(e)
}
}
table.GenerateAtomicCell()
}
func main() {
SimpleTable()
}
扩展阅读:
PDF是Portable Document Format的简称,
意为“可携带文档格式”,
是由Adobe Systems用于与
应用程序、操作系统、硬件无关的方式
进行文件交换所发展出的文件格式。
PDF文件以PostScript语言图象模型为基础,
无论在哪种打印机上都可保证
精确的颜色和准确的打印效果,
即PDF会忠实地再现原稿的
每一个字符、颜色以及图象。
PDF文件使用了工业标准的压缩算法,
通常比PostScript文件小,
易于传输与储存。
它还是页独立的,
一个PDF文件包含一个或多个“页”,
可以单独处理各页,
特别适合多处理器系统的工作。
此外,
一个PDF文件还包含文件中所使用的PDF格式版本,
以及文件中一些重要结构的定位信息。
完整的源代码可以登录【华纳网】下载。
https://www.worldwarner.com/
免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。