Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/inokawa/remark-pdf
remark plugin to compile markdown to pdf.
https://github.com/inokawa/remark-pdf
markdown mdast pdf remark remark-plugin unified
Last synced: 30 days ago
JSON representation
remark plugin to compile markdown to pdf.
- Host: GitHub
- URL: https://github.com/inokawa/remark-pdf
- Owner: inokawa
- License: mit
- Created: 2022-01-09T06:16:22.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-15T08:33:39.000Z (11 months ago)
- Last Synced: 2024-03-15T11:04:53.691Z (8 months ago)
- Topics: markdown, mdast, pdf, remark, remark-plugin, unified
- Language: TypeScript
- Homepage: https://inokawa.github.io/remark-pdf/
- Size: 7.53 MB
- Stars: 20
- Watchers: 4
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# remark-pdf
![npm](https://img.shields.io/npm/v/remark-pdf) ![check](https://github.com/inokawa/remark-pdf/workflows/check/badge.svg) ![demo](https://github.com/inokawa/remark-pdf/workflows/demo/badge.svg)
[remark](https://github.com/remarkjs/remark) plugin to compile markdown to pdf.
### 🚧 WIP 🚧
This project is aiming to support all nodes in [mdast](https://github.com/syntax-tree/mdast) syntax tree, but currently transformation and stylings may not be well.
If you have some feature requests or improvements, please create a [issue](https://github.com/inokawa/remark-pdf/issues) or [PR](https://github.com/inokawa/remark-pdf/pulls).
- [x] paragraph
- [x] heading
- [x] thematicBreak
- [ ] blockquote
- [x] list
- [x] listItem
- [x] table
- [x] tableRow
- [x] tableCell
- [ ] html
- [ ] code
- [ ] yaml
- [ ] toml
- [ ] definition
- [ ] footnoteDefinition
- [x] text
- [x] emphasis
- [x] strong
- [x] delete
- [ ] inlineCode
- [x] break
- [x] link
- [x] image
- [ ] linkReference
- [ ] imageReference
- [ ] footnote
- [ ] footnoteReference
- [ ] math
- [ ] inlineMath## Demo
https://inokawa.github.io/remark-pdf/
## Install
```sh
npm install remark-pdf
```## Usage
### Browser
```javascript
import { unified } from "unified";
import markdown from "remark-parse";
import pdf from "remark-pdf";
import { saveAs } from "file-saver";const processor = unified().use(markdown).use(pdf, { output: "blob" });
const text = "# hello world";
(async () => {
const doc = await processor.process(text);
const blob = await doc.result;
saveAs(blob, "example.pdf");
})();
```### Node.js
```javascript
import { unified } from "unified";
import markdown from "remark-parse";
import pdf from "remark-pdf/node";
import * as fs from "fs";const processor = unified().use(markdown).use(pdf, { output: "buffer" });
const text = "# hello world";
(async () => {
const doc = await processor.process(text);
const buffer = await doc.result;
fs.writeFileSync("example.pdf", buffer);
})();
```## Documentation
- [API reference](./docs/API.md)
## Contribute
All contributions are welcome.
If you find a problem, feel free to create an [issue](https://github.com/inokawa/remark-pdf/issues) or a [PR](https://github.com/inokawa/remark-pdf/pulls).### Making a Pull Request
1. Fork this repo.
2. Run `npm install`.
3. Commit your fix.
4. Add tests to cover the fix.
5. Make a PR and confirm all the CI checks passed.## Related projects
- [remark-slate-transformer](https://github.com/inokawa/remark-slate-transformer)
- [remark-docx](https://github.com/inokawa/remark-docx)