Hexo renderer based on pdf2htmlEX.
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
).
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>
- 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;
}
}
- 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.