This is a PDF generator from document website such as docusaurus
. This is a fork of mr-pdf which was not maintained anymore.
Feel free to contribute to this project.
npm install -g docs-to-pdf
npx docs-to-pdf --initialDocURLs="https://docusaurus.io/docs/" --contentSelector="article" --paginationSelector="a.pagination-nav__link.pagination-nav__link--next" --excludeSelectors=".margin-vert--xl a,[class^='tocCollapsible'],.breadcrumbs,.theme-edit-this-page" --coverImage="https://docusaurus.io/img/docusaurus.png" --coverTitle="Docusaurus v2"
For Docusaurus v2
npx docs-to-pdf docusaurus --initialDocURLs="https://docusaurus.io/docs/"
OR
npx docs-to-pdf --initialDocURLs="https://docusaurus.io/docs/" --contentSelector="article" --paginationSelector="a.pagination-nav__link.pagination-nav__link--next" --excludeSelectors=".margin-vert--xl a,[class^='tocCollapsible'],.breadcrumbs,.theme-edit-this-page" --coverImage="https://docusaurus.io/img/docusaurus.png" --coverTitle="Docusaurus v2"
Option | Required | Description |
---|---|---|
--initialDocURLs |
Yes | set URL to start generating PDF from. |
--contentSelector |
No | used to find the part of main content |
--paginationSelector |
No | CSS Selector used to find next page to be printed for looping. |
--excludeURLs |
No | URLs to be excluded in PDF |
--excludeSelectors |
No | exclude selectors from PDF. Separate each selector with comma and no space. But you can use space in each selector. ex: --excludeSelectors=".nav,.next > a" |
--cssStyle |
No | CSS style to adjust PDF output ex: --cssStyle="body{padding-top: 0;}" *If you're project owner you can use @media print { } to edit CSS for PDF. |
--outputPDFFilename |
No | name of the output PDF file. Default is docs-to-pdf.pdf |
--pdfMargin |
No | set margin around PDF file. Separate each margin with comma and no space. ex: --pdfMargin="10,20,30,40" . This sets margin top: 10px, right: 20px, bottom: 30px, left: 40px |
--paperFormat |
No | pdf format ex: --paperFormat="A3" . Please check this link for available formats Puppeteer document |
--disableTOC |
No | Optional toggle to show the table of contents or not |
--coverTitle |
No | Title for the PDF cover. |
--coverImage |
No | <src> Image for PDF cover (does not support SVG) |
--coverSub |
No | Subtitle the for PDF cover. Add <br/> tags for multiple lines. |
--headerTemplate |
No | HTML template for the print header. Please check this link for details of injecting values Puppeteer document |
--footerTemplate |
No | HTML template for the print footer. Please check this link for details of injecting values Puppeteer document |
--puppeteerArgs |
No | Add puppeteer BrowserLaunchArgumentOptions arguments ex: --sandbox Puppeteer document |
--protocolTimeout |
No | Timeout setting for individual protocol calls in milliseconds. If omitted, the default value of 180000 ms (3 min) is used |
--filterKeyword |
No | Only adds pages to the PDF containing a given meta keywords. Makes it possible to generate PDFs of selected pages |
--baseUrl |
No | Base URL for all relative URLs. Allows to render the pdf on localhost (ci/Github Actions) while referencing the deployed page. |
--excludePaths |
No | URL Paths to be excluded |
--restrictPaths |
No | Keep Only URL Path with the same rootPath as --initialDocURLs |
Option | Required | Description |
---|---|---|
--version |
No | Docusaurus version. Default is 2. |
--builDir |
No | Path to Docusaurus build dir. Either absolute or relative from path of the shell |
initialDocURLs
: https://docusaurus.io/docs
demoPDF
: https://github.com/jean-humann/docs-to-pdf/blob/master/pdf/v2-docusaurus.pdf
command
:
npx docs-to-pdf docusaurus --initialDocURLs="https://docusaurus.io/docs/"
OR
npx docs-to-pdf --initialDocURLs="https://docusaurus.io/docs/" --contentSelector="article" --paginationSelector="a.pagination-nav__link.pagination-nav__link--next" --excludeSelectors=".margin-vert--xl a,[class^='tocCollapsible'],.breadcrumbs,.theme-edit-this-page" --coverImage="https://docusaurus.io/img/docusaurus.png" --coverTitle="Docusaurus v2"
initialDocURLs
: https://docusaurus.io/docs/en/installation
demoPDF
: https://github.com/jean-humann/docs-to-pdf/blob/master/pdf/v1-docusaurus.pdf
command
:
npx docs-to-pdf docusaurus --initialDocURLs="https://docusaurus.io/docs/en/installation" --version=1
OR
npx docs-to-pdf --initialDocURLs="https://docusaurus.io/docs/en/installation" --contentSelector="article" --paginationSelector=".docs-prevnext > a.docs-next" --excludeSelectors=".fixedHeaderContainer,footer.nav-footer,#docsNav,nav.onPageNav,a.edit-page-link,div.docs-prevnext" --cssStyle=".navPusher {padding-top: 0;}" --pdfMargin="20"
- puppeteer can make html to PDF like you can print HTML page in chrome browser
- so, the idea of docs-to-pdf is generating one big HTML through looping page link, then run
page.pdf()
from puppeteer to generate PDF.
This repo's code is coming from https://github.com/KohheePeace/mr-pdf.
Thanks for awesome code made by @KohheePeace, @maxarndt and @aloisklink.
@bojl approach to make TOC was awesome and breakthrough.