mirror of
https://github.com/Dadido3/go-typst.git
synced 2025-04-19 07:33:16 +00:00
61 lines
2.0 KiB
Markdown
61 lines
2.0 KiB
Markdown
# go-typst [](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:
|
|
|
|

|
|
|
|
[the instructions in the typst repository]: https://github.com/typst/typst?tab=readme-ov-file#installation
|
|
[typst]: https://typst.app/
|