
Security News
Browserslist-rs Gets Major Refactor, Cutting Binary Size by Over 1MB
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
github.com/rosbit/pdf-table-generator
type PDFGenerator interface {
// 在输出整个pdf之前调用,在这里可以做一些输出准备工作
Init()
// 输出结束时调用
Cleanup()
GetPageSize() (pageSize *Rect) // 页面尺寸,比如A4
// 获取线条属性,比如 width=0.5, lineType="normal"
GetLineAttr() (drawLine bool, width float64, lineType string)
// 获取字体名称及字体文件
GetFonts() (<-chan *Font)
// 获取图片及属性
GetImages() (<-chan *ImageAttr) // Image-Path => {Left-upper Point, width, height}
// 获取输出目标
GetWriter() io.Writer
// 获取pdf的标题、底部y坐标、字体名称、字体大小。(标题会在计算后居中显示)
GetTitle() (title string, y float64, fontFamily string, fontSize float64)
// 获取pdf的标题栏: 第一行的(x,y)坐标、高度、字体名称、字体大小、标题描述
GetColumnTitles() (x, y float64, height float64, fontFamily string, fontSize float64, titles []*Title)
// 获取所有的输出行: 第一行的y坐标、高度、字体名称、字体大小、输出行(标题Name => 值)的channel
GetRows() (firstY float64, height float64, fontFamily string, fontSize float64, rows <-chan map[string]string)
package main
import (
"github.com/rosbit/pdf-table-generator"
"os"
"io"
"log"
)
func main() {
pg := &pdfTest{}
pdfgen.GeneratePDFTable(pg);
}
// ---- PDFTableGenerator implementation ----
type pdfTest struct {
pdfgen.A4PDFTableGenerator
o *os.File
}
func (t *pdfTest) Init() {
o, e := os.OpenFile("./a.pdf", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0755)
if e != nil {
log.Printf("%v\n", e)
return
}
t.o = o
}
func (t *pdfTest) Cleanup() {
if t.o != nil {
t.o.Close()
}
}
func (t *pdfTest) GetFonts() (<-chan *pdfgen.Font) {
c := make(chan *pdfgen.Font)
go func() {
c <- &pdfgen.Font{
Family: "msyh",
FontPath: "./msyh.ttf", // make sure the file exists
}
close(c)
}()
return c
}
func (t *pdfTest) GetImages() (<-chan *pdfgen.ImageAttr) {
c := make(chan *pdfgen.ImageAttr)
go func(){
c <- &pdfgen.ImageAttr{
Point: pdfgen.Point{
X: 10,
Y: 10,
},
Rect: pdfgen.Rect{
W: 40,
H: 40,
},
ImagePath: "./logo.png", // make sure the file exists
}
close(c)
}()
return c
}
func (t *pdfTest) GetWriter() io.Writer {
return t.o
}
func (t *pdfTest) GetTitle() (title string, y float64, fontFamily string, fontSize float64) {
title = "看看pdf标题是否居中"
y = 40
fontFamily = "msyh"
fontSize = 20.0
return
}
func (t *pdfTest) GetColumnTitles() (x, y float64, height float64, fontFamily string, fontSize float64, titles []*pdfgen.Title) {
x, y = 30.0, 70.0
height = 30.0
fontFamily = "msyh"
fontSize = 12.0
titles = []*pdfgen.Title{
&pdfgen.Title{
Name: "序号",
Width: 50,
},
&pdfgen.Title{
Name: "封号",
Width: 70,
},
&pdfgen.Title{
Name: "外号",
Width: 70,
},
&pdfgen.Title{
Name: "姓名",
Width: 70,
},
&pdfgen.Title{
Name: "性别",
Width: 70,
},
&pdfgen.Title{
Name: "签名",
Width: 260,
ColumnValueAlignLeft: true,
},
}
return
}
func (t *pdfTest) GetRows() (firstY float64, height float64, fontFamily string, fontSize float64, rows <-chan map[string]string) {
firstY = 100
height = 29.0
fontFamily = "msyh"
fontSize = 12.0
c := make(chan map[string]string)
go func() {
c <- map[string]string{
"序号": "1",
"封号": "千手斗罗",
"外号": "千手斗罗",
"姓名": "唐三",
"性别": "男",
"签名": "过去的,...;未来的,...;现在的,...。",
}
c <- map[string]string{
"序号": "2",
"封号": "柔骨斗罗",
"外号": "柔骨斗罗",
"姓名": "小舞",
"性别": "女",
"签名": "不乱...,不困...。不畏...,不念...。",
}
close(c)
}()
rows = c
return
}
FAQs
Unknown package
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.
Research
Security News
Eight new malicious Firefox extensions impersonate games, steal OAuth tokens, hijack sessions, and exploit browser permissions to spy on users.
Security News
The official Go SDK for the Model Context Protocol is in development, with a stable, production-ready release expected by August 2025.