Skip to content

34j/hexo-renderer-pdf

Repository files navigation

hexo-renderer-pdf

npm package Build Status Downloads Issues Code Coverage Commitizen Friendly Semantic Release

Hexo renderer based on pdf2htmlEX.

Installation

Note that WSL can be used (for Windows users).

wget -N https://github.com/pdf2htmlEX/pdf2htmlEX/releases/download/v0.18.8.rc1/pdf2htmlEX-0.18.8.rc1-master-20200630-Ubuntu-bionic-x86_64.deb -O pdf2htmlEX.deb
sudo apt install ./pdf2htmlEX.deb
npm install hexo-renderer-pdf --save

Just place pdf files in source/_posts (and run hexo s).

Configuration (Optional)

render_pdf:
  args: ['--process-outline', '0', '--zoom', '1.25'] # pdf2htmlEX additional arguments
  wrapWithIframe: true # Whether to wrap the pdf with an iframe
  wrapHtml: |
    <html>
      <head>
          <style>body{margin:0;overflow:hidden;}</style>
          <style>::-webkit-scrollbar{display:none;}</style>
          <title>%s</title>
          <meta charset='utf-8'>
          <meta name="description" content="%s">
          <meta name="keywords" content="%s">
          <meta name="author" content="%s">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
      </head>
      <body>
          <iframe scrolling="no" style='overflow:hidden; display:block; border:none; height:100vh; width:100%;' srcdoc='%s'></iframe>
      </body>
    </html>

Customizing CSS (Optional)

  • Copy the assets to the root of your hexo project
cp -r $(wsl -e wslpath -m /usr/local/share/pdf2htmlEX) .       
rm -r pdf2htmlEX/poppler 
rm -r pdf2htmlEX/pkgconfig
git add pdf2htmlEX
git commit -m "chore: copy pdf2htmlEX assets"
  • Specify data-dir in the pdf2htmlEX options
render_pdf:
  args: ['--data-dir', 'pdf2htmlEX']
  • Edit fancy.min.css as you like
#page-container {
  background-color: transparent;
  background-image: none;
}
#sidebar{
  background-color: transparent;
}
.pf{
  box-shadow: none;
}
img {
  mix-blend-mode: multiply;
}
@media (prefers-color-scheme: dark) {
  img {
    filter: invert(1);
    mix-blend-mode: lighten;
  }
}

Limitations

  • Somehow, using a non-specific fonts for math expressions results in Cannot flatten a non-CID font warning and the characters garbled. Using Cambria Math was a workaround.
  • Warning: encoding confliction detected in font: 3 is still displayed but it seems to be harmless.
  • You can open a PDF document in a text editor and write Front-matter in the same way as you would in markdown. It would be possible to generate this automatically from the PDF metadata, but this feature is not implemented.

About

Hexo Renderer which treats PDF files as posts. Based on pdf2htmlEX.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published