hexo在线查看pdf

场景#

由于在看《mysql是如何运行的》,做md文件笔记时,发现好多都是按pdf一字不漏打出来。所以想着能不能直接本地编辑pdf,然后博客上支持在线查看

事后觉得这个方式有待斟酌,电脑上/平板上查看没啥问题,手机上查看字有点小,但也还能接受。==>待斟酌
不过下面的方案是可行的。

准备#

需要到官网下载 pdf.js

https://github.com/mozilla/pdf.js/releases ,这里选择 v3.4.120中的 pdfjs-3.4.120-dist.zip ,最新版本好像有问题

操作#

pdfjs处理#

在source/下创建myjs/pdfjs文件夹,并解压到这个文件夹下
ly-20241212141830564

修改pdfjs/web/viewer.js

if (fileOrigin !== viewerOrigin) {//1563行左右
	throw new Error("file origin does not match viewer's");
}
//注释掉,为了处理跨域问题,注释掉后允许在线访问其他网站的pdf
// if (fileOrigin !== viewerOrigin) {
//	throw new Error("file origin does not match viewer's");
//}

hexo配置修改#

# 找到# Directory下的skip_render项,添加忽略渲染的文件夹
skip_render:  ['myjs/pdfjs/**/*']

清理hexo中public及其他缓存文件#

 hexo clean & hexo g

文件预览测试#

本地文件#

我们在hexo的source文件夹下,放置这样一个文件: source/pdf/my.pdf
ly-20241212141830812

MD文件修改#

<iframe src='/myjs/pdfjs/web/viewer.html?file=/pdf/my.pdf' style="padding: 0;width:100%;" marginwidth="0" frameborder="no" scrolling="no" height="2000px"></iframe>

操作并查看#

hexo g & hexo s

ly-20241212141831013

问题01

Cannot download sources#

在maven项目(根目录)下执行

mvn dependency:resolve -Dclassifier=sources

会开始下载,有控制台输出,结束后再点即可

预留#

git使用ssh连不上

  • 处理方式 在系统的host文件中,添加ip指定

    199.232.69.194 github.global.ssl.fastly.net
    140.82.114.4 github.com

hugo踩坑

  • 对于访问文件资源

    • hugo的文件夹名不能以-结尾。
    • 一个文件夹(比如这里是hugo文件夹)中,其中的index.md文件中引用图片时,是以index.md所在文件夹(也就是hugo文件夹)为根目录访问图片;而其中的01a.md文件中引用图片时,是以和该文件同级的01a文件夹(也就是hugo/01a/)为根目录,访问图片
  • 当一个文件夹下存在index.md文件时,其他文件(代表的文章)不显示在网站的文章列表

  • 为了某些文件预览功能,我建议使用下面的文件夹结构处理文章及资源