# go-typst [![test](https://github.com/Dadido3/go-typst/actions/workflows/test.yml/badge.svg)](https://github.com/Dadido3/go-typst/actions/workflows/test.yml) A library to generate documents and reports by utilizing the command line version of [typst]. ## Features - Encoder to convert go objects into typst objects which then can be injected into typst documents. - Parsing of stderr into an go error object. - Uses stdio; No temporary files need to be created. - Good test coverage of features. ## Installation 1. Use `go get github.com/Dadido3/go-typst` inside of your project to add this module to your project. 2. Install typst by following [the instructions in the typst repository]. ## Runtime requirements You need to have [typst] installed on any machine that you want to run your go project on. You can install it by following [the instructions in the typst repository]. ## Usage Here we will create a simple PDF document by passing a reader with typst markup into `typstCLI.Render` and then let it write the resulting PDF data into a file: ```go func main() { r := bytes.NewBufferString(`#set page(width: 100mm, height: auto, margin: 5mm) = go-typst A library to generate documents and reports by utilizing the command line version of typst. #footnote[https://typst.app/] == Features - Encoder to convert go objects into typst objects which then can be injected into typst documents. - Parsing of returned errors into go error objects. - Uses stdio; No temporary files need to be created. - Test coverage of most features.`) typstCLI := typst.CLI{} f, err := os.Create("output.pdf") if err != nil { t.Fatalf("Failed to create output file: %v.", err) } defer f.Close() if err := typstCLI.Render(r, f, nil); err != nil { t.Fatalf("Failed to render document: %v.", err) } } ``` The resulting document will look like this: ![readme-1.svg](documentation/images/readme-1.svg) [the instructions in the typst repository]: https://github.com/typst/typst?tab=readme-ov-file#installation [typst]: https://typst.app/