Compare commits

...

5 Commits

Author SHA1 Message Date
yumauri c299b63f63 v0.7.3 2022-06-26 09:51:34 +03:00
yumauri 020778a9d4 Update size-limit's limit 2022-06-26 09:37:39 +03:00
yumauri 8a15bd69c8 Update transitive dependencies 2022-06-26 09:36:40 +03:00
yumauri 2677573022 Change success conditions to any 2×× code 2022-06-26 09:31:49 +03:00
yumauri 4167947a87 Add NB in README about Gotenberg 7 usage 2022-02-18 09:59:11 +03:00
8 changed files with 2396 additions and 2270 deletions
+13
View File
@@ -26,6 +26,19 @@ Or using `npm`
$ npm install --save gotenberg-js-client
```
## NB ⚠️
This library is not yet fully compatible with Gotenberg 7.<br/>
You can find more info in [this comment](https://github.com/yumauri/gotenberg-js-client/issues/32#issuecomment-981140727).
There are three main issues:
- Gotenberg 7 has introduced new concept of conversion modules, thus, changing conversion URLs, so now they are different, than ones, this library creates. This can be sidestepped using custom connection string or adjusting URL manually (see [this comment](https://github.com/yumauri/gotenberg-js-client/issues/32#issuecomment-981140727)).
- New modules has some new possibilities/parameters, which are impossible to pass, using this library. This can be sidestepped using `adjust`, and casting to `any`, if you use TypeScript (see [this issue](https://github.com/yumauri/gotenberg-js-client/issues/33) for reference).
- Gotenberg 7 can potentially has many many different custom conversion modules, you can even write your own one. You can combine p.1 and p.2 to use any module with any path with any parameters, but I guess it will look not good. But it should work nonetheless.
So, nothing you can live without, but there are some inconveniences. For a while ;)
## Usage
```typescript
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "gotenberg-js-client",
"version": "0.7.2",
"version": "0.7.3",
"description": "A simple JS/TS for interacting with a Gotenberg API",
"author": "Victor Didenko <yumaa.verdin@gmail.com> (https://yumaa.name)",
"license": "MIT",
@@ -25,7 +25,7 @@
{
"path": "pkg/dist-node/index.js",
"webpack": false,
"limit": "4229 B"
"limit": "4244 B"
}
],
"@pika/pack": {
+2 -2
View File
@@ -37,7 +37,7 @@ export function post(
req.on('error', reject)
req.on('response', (res) => {
if (res.statusCode === 200) {
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
resolve(res)
} else {
let error = res.statusCode + ' ' + res.statusMessage
@@ -74,7 +74,7 @@ export function get(this: object | null, url: string): Promise<NodeJS.ReadableSt
req.on('error', reject)
req.on('response', (res) => {
if (res.statusCode === 200) {
if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
resolve(res)
} else {
res.resume() // ignore response body
Binary file not shown.
Binary file not shown.
+42
View File
@@ -0,0 +1,42 @@
import { createWriteStream } from 'fs'
import { pipe, gotenberg, convert, url, to, please } from '../../src'
// need to run Gotenberg like this
// docker run --rm -p 3500:3000 gotenberg/gotenberg:7
pipe(
gotenberg(`http://localhost:3500/forms/chromium`),
// gotenberg(`https://demo.gotenberg.dev/forms/chromium`),
convert,
url,
to({ margins: [0, 0, 0, 0] }),
(request) => {
;(request.fields as any).url = request.fields.remoteURL
delete request.fields.remoteURL
return request
},
please
)(`https://www.google.com`)
.then((pdf) => pdf.pipe(createWriteStream(`${__dirname}/google.pdf`)))
.catch(console.error)
// pipe(
// gotenberg(''),
// convert, // it is save to remove this line, if you want
// html,
// adjust({
// // manually adjust endpoint, because
// // gotenberg:7 has different conversion endpoints
// url: 'http://localhost:3500/forms/chromium/convert/html',
// // manually adjust for fields
// fields: {
// printBackground: true,
// // `printBackground` is not valid field for gotenberg:6
// // so we have to cast to any, otherwise typescript will complain
// } as any,
// }),
// please
// )('<html><body bgcolor="blue">test</body></html>')
// .then((pdf) => pdf.pipe(createWriteStream(`${__dirname}/html_with_bg.pdf`)))
// .catch(console.error)
+29
View File
@@ -0,0 +1,29 @@
import { createWriteStream } from 'fs'
import { pipe, gotenberg, convert, url, to, please } from '../../src'
import got from 'got'
// need to run Gotenberg like this
// docker run --rm -p 3500:3000 gotenberg/gotenberg:7
// const got = await import('got')
// you can pass any config for your client
// as third argument in `gotenberg` function
const client = {
post: (url, body, headers) => Promise.resolve(got.post({ url, body, headers, isStream: true })),
}
pipe(
gotenberg(`http://localhost:3500/forms/chromium`, client),
convert,
url,
to({ margins: [0, 0, 0, 0] }),
(request) => {
;(request.fields as any).url = request.fields.remoteURL
delete request.fields.remoteURL
return request
},
please
)(`https://www.google.com`)
.then((pdf) => pdf.pipe(createWriteStream(`${__dirname}/google_via_got.pdf`)))
.catch(console.error)
+2308 -2266
View File
File diff suppressed because it is too large Load Diff