2021-08-21 来源:华纳网 责任编辑:王双双 人气:
核心提示:本课内容:大家好,欢迎来到谷雨课堂,PDF文档是行业软件开发中常用到的文档格式,因其打印内容标准、跨平台,故而在很多软件中都会生成PDF文档进行数据交换,比如准考证、工资条打印等。

知识点:

生成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/

 

 

                                                                               





免责声明:本文仅代表作者个人观点,与华纳网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。