tiechui1994 / gopdf Goto Github PK
View Code? Open in Web Editor NEWpdf document generation library
License: MIT License
pdf document generation library
License: MIT License
现在页面是自动分页的, 里面只有 detail, header, footer 分类,
想请问一下, 比如写入内容已占满了半页纸张, 后继的内容想从下一页(新的页面)开始写入, 如何指定? 可以指定吗?
你好,是否可以支持写入io.Writer里?这样的话,可以直接写入浏览器的缓存了,就越过写pdf文件而直接在浏览器打开。
谢谢
panic: font file:ttf//microsoft.ttf not found
比如在每页页脚 写下如下脚注
第 1/10 页
目前发现 好像只能获得第几页的脚注, 却不能一下获得总页码
在测试使用过程中,发现当报告生成页数超过15页后, 在第15页会存在大版空页,是的前后内容中间空出来一大片, 这个是什么原因?
目前的解决方法是将第15页的内容 强制设置一个比较大的div top值, 使得15页直接全部留空, 不知道是不是因为使用的格式问题还是页面超过15页导致的这个问题
如何复现:如下所示,把示例文件 simple_table_test.go 的一部分注释掉了。
期望的结果:只生成0-0,0-1,0-3,1-0四个单元格。
package example
import (
"fmt"
"github.com/tiechui1994/gopdf"
"github.com/tiechui1994/gopdf/core"
"testing"
)
const (
TABLE_IG = "IPAexG"
TABLE_MD = "MPBOLD"
TABLE_MY = "微软雅黑"
)
func SimpleTable() {
r := core.CreateReport()
font3 := core.FontMap{
FontName: TABLE_MY,
FileName: "D:/microsoft.ttf",
}
r.SetFonts([]*core.FontMap{&font3})
r.SetPage("A4", "P")
r.RegisterExecutor(core.Executor(SimpleTableExecutor), core.Detail)
r.Execute("D:/simple_table.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 := `有限公司送达行政处罚决定书`
// 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 TestSimpleTable(t *testing.T) {
SimpleTable()
}
可以支持pdf文档目录 toc table of contents 功能吗? 😆
就是点击目前跳转到指定页面 指定锚点位置
折线图有带吗
给个说明文档
四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 | 四个单词 |
---|---|---|---|---|---|---|---|---|---|
2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 |
2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 | 2020-01-10 10:10:10 |
结果如下
18:09:17 markdown.go:1017: children 0
SetPage("A4", "L")
生成的表格宽度并未变宽,同时页面的页脚也随之丢失
用模板描述生成操作,然后解析执行,这样会方便很多,现在所有PDF生成器都没这功能,你弄一个,简单的生成语句就行,肯定很受欢迎
http://www.golangcodes.com/forum.php?mod=viewthread&tid=23
生成的pdf,url不是超链接
path = fmt.Sprintf("/tmp/%v.png", time.Now().Unix())
写死了 /tmp
windows下没有这个目录
怎么生成文档目录呢?
想从第二页起, 写入特定背景水印,斜三角形式的那种 怎么做?
非常棒的一个库,但是只支持使用目录导入字体的话有诸多不便,如果能直接使用[]byte或是io.Reader导入字体就更好了。这样字体可以内嵌在二进制中
再次感谢作者
如题, 谢谢!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.