package wpdf import ( _ "embed" "fmt" "gogs.mikescher.com/BlackForestBytes/goext/imageext" "gogs.mikescher.com/BlackForestBytes/goext/langext" "os" "path" "testing" ) //go:embed logo.png var logoData []byte func TestPDFBuilder(t *testing.T) { builder := NewPDFBuilder(Portrait, SizeA4, true) builder.Debug(true) logoRef := builder.RegisterImage(logoData) builder.SetMargins(PDFMargins{Left: 15, Top: 40, Right: 10}) builder.AddPage() builder.SetFont(FontHelvetica, Normal, 10) builder.Cell("Neueinrichtung deiner Entgeltumwandlung", NewPDFCellOpt().Bold().FontSize(20)) builder.Ln(10) builder.SetFont(FontHelvetica, Normal, 10) builder.Cell("Hello World", NewPDFCellOpt().Width(50).Align(AlignHorzCenter).LnPos(BreakToRight)) builder.IncX(10) builder.Cell("Second Text", NewPDFCellOpt().AutoWidth().AutoWidthPaddingX(2).LnPos(BreakToRight)) builder.Ln(10) builder.MultiCell("Im Fall einer individuellen Entgeltumwandlung ist die Zuschussverpflichtung auf der Grundlage des Betriebsrentenstärkungsgesetzes in der gesetzlich vorgeschriebenen Höhe (§ 1a Abs. 1a BetrAVG), über den arbeitgeberfinanzierten Zuschuss erfüllt.") builder.Ln(4) builder.Image(logoRef, NewPDFImageOpt().X(90).Y(160).Width(70).Height(30).ImageFit(imageext.ImageFitContainCenter)) builder.Ln(4) cellStyleHeader := &TableCellStyleOpt{ PDFCellOpt: *NewPDFCellOpt(). FontSize(float64(8)). BorderColorHex(uint32(0x666666)). Border(BorderFull). FillColorHex(uint32(0xC0C0C0)). FillBackground(true). TextColorHex(uint32(0x000000)). Align(AlignHorzCenter). Bold(), minWidth: langext.Ptr(float64(5)), ellipsize: langext.PTrue, multiCell: langext.PFalse, } cellStyleMulti := &TableCellStyleOpt{ PDFCellOpt: *NewPDFCellOpt(). FontSize(float64(8)). BorderColorHex(uint32(0x666666)). Border(BorderFull). FillColorHex(uint32(0xC060C0)). FillBackground(true). TextColorHex(uint32(0x000000)), minWidth: langext.Ptr(float64(5)), ellipsize: langext.PFalse, multiCell: langext.PTrue, } builder.Table(). Widths("auto", "20", "1fr", "20"). PadX(2). PadY(2). AddRowWithStyle(cellStyleHeader, "test", "hello", "123", "end"). AddRowDefaultStyle("test", "hello", "123", "end"). AddRowDefaultStyle("123", "helasdsalo", "a", "enwqad"). AddRowDefaultStyle("123asd", "TrimMeTrimMeTrimMeTrimMe", "a", "enwqad"). AddRowWithStyle(cellStyleMulti, "123", "helasdsalo", "a", "MultiCell: enwqad enw\nqad enwqad enwqad enwqad enwqad"). AddRowDefaultStyle("123", "helasdsalo", "a", "enwqad"). Debug(false). Build() builder.Table(). Widths("auto", "20", "1fr", "20"). PadX(2). PadY(2). BuildRow().RowStyle(cellStyleHeader).Cells("test", "hello", "123", "end").BuildRow(). BuildRow().Cells("test", "hello", "123", "end").BuildRow(). BuildRow().RowStyle(cellStyleMulti.FillHeight(true)).Cell("123").Cell("helasdsalo").Cell("a").Cell("MultiCell: enwqad enw\nqad enwqad enwqad enwqad enwqad").BuildRow(). AddRowDefaultStyle("123", "helasdsalo", "a", "enwqad"). Debug(false). Build() bin, err := builder.Build() if err != nil { t.Fatal(err) } fn := "wpdf_test.pdf" _ = os.WriteFile(fn, bin, 0644) fmt.Println("file://" + path.Join(langext.Must(os.Getwd()), fn)) }