You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.9 KiB
Markdown
89 lines
1.9 KiB
Markdown
1 year ago
|
# Async Python Client to The RTEX API Server
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
```bash
|
||
|
pip install rtex
|
||
|
```
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
The API surface of Rtex is spartan so this is basically the whole thing.
|
||
|
|
||
|
```python
|
||
|
import asyncio
|
||
|
|
||
|
from rtex.client import AsyncRtexClient
|
||
|
|
||
|
async def amain():
|
||
|
async with AsyncRtexClient() as rtex:
|
||
|
res = rtex.create_render("\(x^2 + x - 1\)")
|
||
|
|
||
|
if res.status == "success":
|
||
|
with open("equation.png") as output_fd:
|
||
|
await res.save_render(
|
||
|
res.filename,
|
||
|
output_fd
|
||
|
)
|
||
|
|
||
|
def main():
|
||
|
asyncio.run(amain())
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|
||
|
```
|
||
|
|
||
|
## No Thoughts, Just Render
|
||
|
|
||
|
```python
|
||
|
async def amain():
|
||
|
async with AsyncRtexClient() as rtex:
|
||
|
buf = await rtex.render_math("e^x + 1")
|
||
|
|
||
|
# `buf` now contains the bytes of the PNG
|
||
|
```
|
||
|
|
||
|
## Do I look like I know what a Jay-Peg is?
|
||
|
|
||
|
```python
|
||
|
async def amain():
|
||
|
async with AsyncRtexClient() as rtex:
|
||
|
# The render methods accept a format parameter.
|
||
|
# Supported values are "png", "jpg" and "pdf"
|
||
|
buf = await rtex.render_math("e^x + 1", format="jpg")
|
||
|
```
|
||
|
|
||
|
## Self-Hoster
|
||
|
|
||
|
Set the environment variable `RTEX_API_HOST` or do the following.
|
||
|
|
||
|
```python
|
||
|
|
||
|
async def amain():
|
||
|
async with AsyncRtexClient(api_host="https://myserver.ru") as rtex:
|
||
|
buf = await rtex.render_math("e^x + 1")
|
||
|
```
|
||
|
|
||
|
|
||
|
## I Can Tell By The Pixels
|
||
|
|
||
|
`quality` in Rtex speak is an abstract notion of compression for the given
|
||
|
format where `100` is the least compressed and `0` is the most. At the time of
|
||
|
writing the default is `85`.
|
||
|
|
||
|
`density` in Rtex speak is how much to sample the rendered PDF when generating
|
||
|
an image. This has no effect on the `"pdf"` format. At the time of writing the
|
||
|
default is `200`.
|
||
|
|
||
|
```python
|
||
|
|
||
|
async def amain():
|
||
|
async with AsyncRtexClient(api_host="https://myserver.ru") as rtex:
|
||
|
needs_more_jpeg = await rtex.render_math(
|
||
|
"e^x + 1",
|
||
|
density=50,
|
||
|
quality=1
|
||
|
)
|
||
|
```
|
||
|
|