【python】jupyter notebook导出pdf和pdf不显示中文问题

这篇具有很好参考价值的文章主要介绍了【python】jupyter notebook导出pdf和pdf不显示中文问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

使用jupyter notebook导出pdf时,出现了一些问题:

1)会报错,缺少安装包;

2)没有报错并且生成了pdf,但是只显示英文,不显示中文;

3)插入svg图片问题;

下面是给出了一些网搜后适用自己的解决办法。

1. 使用jupyter notebook导出pdf

导出pdf步骤:File-> Download as -> PDF via LaTex(.pdf)

【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

出现报错没有Pandoc

jupyter notebook nbconvert failed: Pandoc wasn't found. Please check that pandoc is installed

报错说明:转换失败,原因是没有找到Pandoc

1.1 安装Pandoc

Pandoc官网下载地址: https://pandoc.org/installing.html

下载安装包github地址:https://github.com/jgm/pandoc/releases/tag/3.1.6.2
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

gitcode的镜像也有:https://gitcode.net/mirrors/jgm/pandoc/-/releases/3.1.6.1?spm=1033.2243.3001.5876
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf
下载pandoc后根据提示正常安装即可。

1.2 安装MiKTex

如果导出pdf通过LaTex,还需要下载MiKTex: https://miktex.org/download
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf
下载MiKtex后根据提示正常安装即可。

两个包(Pandoc,MiKTex)都安装完成后,退出并重启jupyter notebook后才生效。并且,在重启后在导出pdf过程中,会自动安装一些依赖包,根据提示点击安装即可。

注:期间想通过HTML导出pdf,还安装过pip install nbconvert(不过,PDF via. HTML还是报错,先忽略)。

1.3 示例导出pdf

Jupyter编辑示例:
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

导出的pdf示例:
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

2. 中文显示问题

如果jupyter notebook编辑的内容都是英文,安装上面2个包并安装依赖包后直接导出是没有问题的。如果内容包含中文,则只显示英文忽略中文。

2.1 显示中文问题示例

Jupyter编辑内容包含中文示例:
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

包含中文导出pdf示例:只输出英文内容,忽略中文。
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

2.2 解决办法1:修改tex

需要以下三步:

  • (1)将.ipynb文件编译为.tex格式:

    jupyter nbconvert --to latex ${ipynb_file}
    
    # 示例:
    jupyter nbconvert --to latex jupy2pdf-中文.ipynb
    

    执行完成后,会生成文件jupy2pdf-中文.tex

  • (2) 修改tex文件:

    在tex文件的中加入加载包命令:

    \usepackage{fontspec, xunicode, xltxtra}
    \setmainfont{Microsoft YaHei}
    \usepackage{ctex}
    

    【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

  • (3) 使用 MiKTeX 生成pdf:

    执行如下命令可生成pdf:

    xelatex ${tex_file}
    # 示例:
    xelatex jupy2pdf-中文.tex 
    

    其中,命令xelatex就是前面下载的MiKTex软件,对应下载路径:

    /YourDir/MiKTeX/miktex/bin/x64/xelatex
    

    执行完成后,会生成相应的中间文件:

    jupy2pdf-中文.ipynb  # 原文件
    jupy2pdf-中文.tex  # tex编辑文件
    jupy2pdf-中文.aux
    jupy2pdf-中文.log
    jupy2pdf-中文.out
    jupy2pdf-中文.pdf  # 目标pdf文件
    

    示例生成的目标pdf文件:jupy2pdf-中文.pdf
    【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

2.3 解决办法2:修改内置文件

"解决方法1:修改tex"虽然解决了中文显示问题,但是每次需要手动添加相应的中文包才能解决。

(1)先是参考了一篇博客,需要在Python安装包下:

Python\Lib\site-packages\nbconvert\templates\latex 

找到 base.tplx 文件并进行修改。

笔者有nbcovert安装目录,但是没有找到 latex目录(更没有 base.tplx 文件),可能这种方法可以从根本上解决并直接导出pdf(而不需要每次手动在tex文件中手动添加)。

(2)其他地方找到了解决办法

参考: https://www.zhihu.com/question/427092422

与上面修改文件的路不同,修改的是jupyter目录下的文件:

Python\share\jupyter\nbconvert\templates\latex\index.tex.j2

就是把 block doclass下的 article 改成 ctexart
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

示例:从jupyter导出pdf显示中文 (章节名称居中了?)

【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

(3)章节名称居中问题调整

类似地,修改内置文件:

Python\share\jupyter\nbconvert\templates\latex\index.tex.j2

index.tex.j2文件中增加如下命令:参考博客

\CTEXsetup[format={\Large\bfseries}]{section}

修改前后:
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

调整后pdf导出示例:
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

3. 插入.svg图问题

3.1 报错描述

如果想在pdf中显示高清图,可用.pdf格式的图(可通过.tex插入),也可使用svg(网页即可打开)。

(比如 在 https://www.drawio.com/ 这里画的流程图可导出多种格式)

而问题是,在jupyter notebook编辑时,无法插入一个pdf文件,所以想在ipynb插入图只能使用.svg格式的图了,插入方式同一般的图片插入:

![图命名](图路径)
# 比如:
![myfig](./abc.svg)

如果直接的ipynb页面执行 File-> Download as -> PDF via LaTex(.pdf),是会报错的。(并没有明确指出报错的步骤)
【python】jupyter notebook导出pdf和pdf不显示中文问题,python,python,jupyter,pdf

使用命令行执行:

jupyter nbconvert --to latex ./yourfile.ipynb
xelatex yourfile.tex

也会报错:

! Undefined control sequence.
l.695 \includesvg
                 {abc.svg}

总之,可能是MiKTex不支持.svg格式,或者缺少一些包导致。

3.2 解决办法

  1. 放弃在ipynb中使用高清图,使用png/jpg等图片格式,导出则不受影响。

  2. 为了在ipynb和导出pdf都可显示高清图,当前的解决办法是:

    需要svg格式和pdf格式文件都有的情况下:(只有一种格式的话,可用格式转化工具将svg<>pdf转换)

    • ipynb继续使用svg格式
    • 但是用xelatex导出pdf文件时,按如下步骤执行:
    # 1) 将ipynb 编译为.tex格式
    jupyter nbconvert --to latex ./yourfile.ipynb
    
    # 2) 修改 .tex文件
    # 将:  \includesvg{yourfig.svg}
    # 改为: \includegraphics{yourfig.pdf}
    
    # 3) 再执行:
    xelatex ./yourfile.tex 
    # 生成 yourfile.pdf 文件
    

    此时的麻烦程度可能真的想直接在网页ctrl+p另存为pdf算了。。。

    但是,如果编辑的文字或脚本不过分长还好,如果比较长或者要用滚动条显示的,直接ctrl+p得到的pdf显示的内容是不全的。


<完>

2023.08.23 -
2023.08.31 增加.svg图插入问题及解决文章来源地址https://www.toymoban.com/news/detail-673618.html

到了这里,关于【python】jupyter notebook导出pdf和pdf不显示中文问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Mac下解决Jupyter画图无法显示中文问题

    刚配置Jupyter环境的绘图会存在不显示中文问题,网上常用的加两行代码方式是无法解决的,必须要在matplotlib文件下添加SimHei.ttf文件。 按照以下步骤操作即可解决问题: 首先,我们需要去GitHub上下载一个SimHei字体,链接为: https://github.com/dolbydu/font 在其unicode文件夹下找到

    2024年02月08日
    浏览(41)
  • vscode中jupyter notebook显示行号

    今日复制代码的时候,发现jupyter notebook在vscode中的每个cell都是默认不显示行号的 可以从修改设置从根本上解决这个问题, 首先command+ shift+p 就选择第一个: 首选项:打开用户设置(JSON) https://stackoverflow.com/questions/62698920/line-numbers-for-every-cell-in-vscode-jupyter-notebook-cells

    2024年01月22日
    浏览(40)
  • 【Java】itext 实现 html根据模板生成pdf 中文不显示/图片不显示问题解决

    工作中需要使用生成pdf记录,选取使用的是itext 生成 pdf方式。分享下实现方式及遇到的问题。 这里随便找个html课程表作为示例,添加了几张图片为了展示图片转pdf功能。 一:引入jar包 二:导入ftl文件 这块使用的是html语法,将文件后缀名改为ftl即可,在需要参数的地方通过

    2024年02月05日
    浏览(45)
  • 报错解决:jupyter notebook打开显示500 : Internal Server Error

    jupyter notebook打开某一ipynb文件后显示报错: 500 : Internal Server Error 示意图如下: Terminal中的报错: 问题报错的原因在于nbconvert版本不匹配,导致不兼容,需要进行更新。 进入conda环境,输入以下指令: 注:一般上述代码即可解决问题,若 上述方法不可行 ,可尝试输入以下指

    2024年02月12日
    浏览(49)
  • Apache poi xwpf word转PDF中文显示与页码问题解决

    目录 POM依赖 核心配置代码 PDF下载流问题 WPS模板问题 原问题解决方法:https://github.com/opensagres/xdocreport/issues/161 请记住,word转换如果没问题,那么就要设置pdf的字体,这个是铁律! 将PdfOptions提出来作为方法使用 注意前端PDF文件流空白问题参考以下方案进行处理 js下载PDF文件

    2024年02月07日
    浏览(59)
  • Windows 安装 pandoc 将 jupyter 导出 pdf 文件

    访问 https://github.com/jgm/pandoc/releases,下载最新版安装文件,例如, 3.1.6.1 版, 下载完成后,双击安装文件进行安装。详细略。 访问 https://miktex.org/download,下载 MiKTeX 安装文件。 下载完成后,双击安装文件进行安装。详细略。 完结!

    2024年02月13日
    浏览(53)
  • Jupyter Notebook/Python

    pip install graphviz -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 超时 pip3 install --index-url https://pypi.douban.com/simple graphviz pip install --target=./tutorial-env/lib/python3.7/site-packages graphviz pip install graphviz --target=/usr/bin/tutorial-env/lib/python3.7/site-packages/graphvi Looking in indexes: https://pypi.tuna.tsin

    2024年02月08日
    浏览(64)
  • Python应用工具-Jupyter Notebook

    工具简介 Jupyter Notebook是 基于 网页的用于交互计算的 应用程序,以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下 显示,文档是保存为后缀名为 . ipynb 的 JSON 格式文件。 操作指令 安装: pip3 install jupyter 启动: jupyter not

    2024年02月12日
    浏览(55)
  • python pip安装jupyter notebook

    如果你想在 Python 环境中安装 Jupyter Notebook,可以使用 pip 命令来进行安装。以下是在命令行界面中安装 Jupyter Notebook 的步骤: 打开命令行界面(例如 Windows 的命令提示符或 macOS/Linux 的终端)。 运行以下命令来更新 pip 工具到最新版本: 运行以下命令来安装 Jupyter Notebook: 在

    2024年02月06日
    浏览(50)
  • 【python】jupyter notebook的快捷键

    Jupyter Notebook 提供了许多快捷键以方便操作。这些快捷键分为两类:命令模式快捷键和编辑模式快捷键。 命令模式快捷键 : 在命令模式下,细胞边框是蓝色的。这些快捷键主要用于操作单元格。 Enter :进入编辑模式 Shift + Enter :运行当前单元格并选中下一个单元格 Ctrl + E

    2024年02月13日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包