You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用nbconvert导出Jupyter Notebook为PDF时表格无法适配页面的解决方法

解决Jupyter Notebook导出PDF时表格列显示不全的问题

下面是几种实用的解决办法:

  • 给表格添加自适应样式
    如果是用pandas生成的表格,直接通过Styler给表格加CSS规则,让内容自动换行、表格占满页面宽度:

    import pandas as pd
    # 假设df是你的数据框
    styled_df = df.style.set_table_styles([
        {'selector': 'table', 'props': [('width', '100%'), ('table-layout', 'fixed')]},
        {'selector': 'td', 'props': [('word-wrap', 'break-word')]}
    ])
    styled_df
    

    也可以在Notebook的Markdown单元格里插入全局CSS,对所有表格生效:

    <style>
    table {
        width: 100% !important;
        table-layout: fixed !important;
    }
    td {
        word-wrap: break-word !important;
    }
    </style>
    
  • 用自定义LaTeX模板缩放表格
    nbconvert转PDF依赖LaTeX,我们可以自定义模板让表格自动缩放到页面宽度:

    1. 新建一个custom.tplx文件,内容如下:
    ((*- extends 'article.tplx' -*))
    
    ((* block table *))
    \begin{table}[H]
        \centering
        \resizebox{\textwidth}{!}{
            ((( super() )))
        }
    \end{table}
    ((* endblock table *))
    
    1. 导出时指定这个模板:
    jupyter nbconvert file_name.ipynb --no-input --to=pdf --template=custom.tplx
    
  • 切换为横向页面布局
    要是表格实在太宽,直接把PDF页面改成横向:
    要么用命令行参数指定:

    jupyter nbconvert file_name.ipynb --no-input --to=pdf --PDFExporter.latex_command="xelatex -V --no-pdf - '\documentclass[landscape]{article} \input{input.tex}'"
    

    要么在Notebook里加Raw单元格,给表格单独设置横向:
    表格前的Raw单元格:

    \usepackage{pdflscape}
    \begin{landscape}
    

    表格后的Raw单元格:

    \end{landscape}
    

内容的提问来源于stack exchange,提问作者Bedi Egilmez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 14:27:41