calibre_web的pdf封面提取问题
在用johngong/calibre-web:latest这个镜像 https://hub.docker.com/r/johngong/calibre-web
作为自己nas上的图书馆时发现pdf文件无法生成封面,![2025-03-06-14-40-56 [hugo-no-render]](http://pictures.winotmk.com/240925_calibre_web%E7%9A%84pdf%E5%B0%81%E9%9D%A2%E6%8F%90%E5%8F%96%E9%97%AE%E9%A2%98/2025-03-06-14-40-56_199d9b99.png)
断断续续排查了两周,百思不得解,尝试过:
- 设置imagemagick的
policy.xml文件(/etc/Imagemagick/policy.xml) - 使用lscr.io/linuxserver/calibre-web:latest的镜像
- 自己重新构建镜像
- 重新安装calibre-web包和重装imagemagick包
都解决不了,总之是十分折腾,最后认为可能是johngong/calibre-web:latest可能是里少了一个imagemagick-pdf包
最终有效的解决方法的折腾流程
我尝试上传pdf文件,然后打开日志(日志级别设置为DEBUG)
查看文件:/config/calbre-web/calbre-web.log
有这么一行:
1 | [2024-09-25 12:10:22,144] WARN {cps.uploader:237} Cannot extract cover image, using default: no decode delegate for this image format `PDF' @ error/constitute.c/ReadImage/746 |
PDF转就转不出来
所以找到了:
https://github.com/ImageMagick/ImageMagick/issues/6148
1 | apk add --no-cache imagemagick imagemagick-pdf |
安装完以后,再次尝试上传pdf格式的书,就看见封面辣!!
johngong/calibre-web的一些设置
https://github.com/gshang2017/docker/issues/133
如果一编辑图书的元数据就卡死,可用尝试:
这两条设置为true,则
这里不会出现google等选项,家里的nas没有梯子环境,反而会导致卡死,所以禁用google吧。。也没啥用
弯路
这里想记一下这个弯路,在calibre-web的FAQ里赫然记着有关pdf文件转不出封面的解决办法,说要改
https://github.com/janeczku/calibre-web/wiki/FAQ#what-to-do-if-cover-pictures-are-not-extracted-from-pdf-files
所以可以有/etc/Imagemagick/policy.xml:
1 | <policymap> |
这是最容易找到的一种解法,但我自己试了无用,没有上面的装apk add imagemagick-pdf好使
尝试出来的另一种PDF封面提取可行方法
这样做出来的calibre-web镜像可以实现PDF转换,但是没有电子书格式转换,没有禁用google元数据搜索,没有中文环境,懒得自己做了,还是修修用johngong/calibre-web包吧
为了试验,我用FROM ubuntu:latest作为镜像基底,然后:
装calibre-web
安装calibre-web:
https://github.com/janeczku/calibre-web?tab=readme-ov-file#installation
https://github.com/janeczku/calibre-web/wiki/Dependencies-in-Calibre-Web-Linux-and-Windows
这里也有提到
https://chenjiehua.me/others/calibre-web-personal-book-store.html
1 | pip install calibreweb |
装imagemagick
然后安装imagemagick
官方:
https://imagemagick.org/script/download.php
也有提到:
https://www.cnblogs.com/echohye/p/17727865.html
1 | apt install imagemagick |
装完后convert和magick命令应当是可用的
手动装imagemagick
或者我用上面官方的magick文件手动配貌似也行:
先把magick文件放入根目录
1 | ./magick --appimage-extract |
https://docs.appimage.org/user-guide/troubleshooting/fuse.html
提到了可以用--appimage-extract直接释放出软件包来
会发现释放出来文件在/squashfs-root目录里
设置环境变量:
1 | export MAGICK_HOME="/squashfs-root/usr" |
然后imagemagick应该就能用了。。
其他
lscr.io/linuxserver/calibre-web:latest
这个镜像也不小,但功能还算完整,上传pdf可直接显示封面,但不是中文环境,而且部署到我的nas上后死活传不了新书说什么无法写入,懒得深究了,弃之