A business document generator created by Quail.
package main
import (
"log"
"os"
"github.com/quailyquaily/bizdocgen/builder"
)
func main() {
bd, err := builder.NewInvoiceBuilderFromFile(builder.Config{
Lang: "en",
InvoiceLayout: builder.LayoutModern, // classic|modern|compact|spotlight|ledger|split
}, "./samples/invoice-1.yaml")
if err != nil {
log.Panic(err)
}
buf, err := bd.GenerateInvoice()
if err != nil {
log.Panic(err)
}
_ = os.WriteFile("invoice.pdf", buf, 0o666)
}To render CJK content, configure UTF-8 fonts (the repo includes Noto Sans CJK under fonts/):
bd, _ := builder.NewSettlementStatementBuilderFromFile(
builder.Config{
Lang: "ja", // also: zh_cn, zh_tw (or zh-CN / zh-TW)
SettlementStatementLayout: builder.LayoutModern,
FontName: "noto-sans-cjk",
FontNormal: "./fonts/NotoSansCJK-JP/NotoSansCJKjp-Regular.ttf",
FontItalic: "./fonts/NotoSansCJK-JP/NotoSansCJKjp-Italic.ttf",
FontBold: "./fonts/NotoSansCJK-JP/NotoSansCJKjp-Bold.ttf",
FontBoldItalic: "./fonts/NotoSansCJK-JP/NotoSansCJKjp-BoldItalic.ttf",
},
"./samples/settlementstatement-1.yaml",
)Select layouts via builder.Config.InvoiceLayout / builder.Config.SettlementStatementLayout.
Built-ins: classic, modern, compact, spotlight, ledger, split. See docs/layouts.md.
To display an implied exchange rate in invoice summary, set:
summary.total_include_tax_quote_amountsummary.total_include_tax_quota_symbol(alias:summary.total_include_tax_quote_symbol)
- Inputs (YAML):
samples/ - Generate local PDFs:
go run ./cmd/generate-samples→samples/(PDFs are ignored by git via.gitignore)
