如何在Sphinx中引入PDF 1.6文件并消除LaTeX编译警告
解决Sphinx + pdflatex引入PDF 1.6图片的版本不兼容问题
方案1:直接给pdflatex传递编译参数(无额外脚本,无执行时机问题)
不需要修改生成的tex文件内容,直接在conf.py中添加如下配置,给pdflatex传递启动参数,在编译初始化阶段就指定PDF版本:
latex_engine = 'pdflatex' latex_additional_args = { 'pdflatex': [ '-pdfminorversion=6', '-interaction=nonstopmode' ] }
该参数会在pdflatex进程启动时生效,优先级高于tex文件内的配置,不会出现「修改PDF版本过晚」的报错。
如果使用Sphinx 5.0及以上版本,可直接在conf.py中添加一行配置即可自动处理版本设置时机:
pdf_version = '1.6'
方案2:从源端降低插入图片的PDF版本(无需修改Sphinx配置)
直接调整LibreOffice导出参数,强制生成PDF 1.5版本的图片,从根源消除版本不兼容问题,可直接集成到原有makefile流程中:
libreoffice --headless --convert-to pdf:writer_pdf_Export --export "PDFVersion=1.5" 输入文件.odg
如果是已生成的PDF 1.6文件,可通过Ghostscript批量降级,命令如下:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.5 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=输出文件.pdf 输入文件.pdf
方案3:强制将版本配置插入LaTeX文件最开头
如果必须通过tex文件代码设置版本,可使用Sphinx的latex_elements配置中的classoptions注入参数,代码会被插入到\documentclass的可选参数中,在tex文件最开头生效,不会出现执行过晚的问题:
latex_elements = { 'classoptions': ',pdfversion=1.6', }
内容的提问来源于stack exchange,提问作者pba
相关产品推荐
相关产品推荐

