解决某些Typora主题导出PDF分页拦腰截断文字或图片等问题的方法

typora是一个轻量级的所见几乎即所得的Markdown书写浏览工具。css主题可定制性强,但定制的很多主题总有各种问题。如果碰到下面问题。

大模型的方法都是修修补补,按下葫芦浮起瓢

真正核心的方案其实是换一个成熟主题,分页控制我觉得比较好的是github.css主题;而喜欢其它风格,可以让大模型来一个不同主题的杂交

Typora添加CSS解决PDF分页问题详细教程

第一步:打开主题文件夹

  1. 启动Typora软件
  2. 打开偏好设置
    • Windows/Linux:点击顶部菜单栏的 文件偏好设置
    • Mac:点击顶部菜单栏的 Typora偏好设置
  3. 找到主题文件夹
    • 在偏好设置窗口中,点击左侧的 外观 选项
    • 点击右侧的 打开主题文件夹 按钮
    • 此时会打开一个文件资源管理器(Windows)或Finder(Mac)窗口,显示Typora的主题文件夹

第二步:创建自定义主题

  1. 复制现有主题

    • 在打开的主题文件夹中,找到你喜欢的主题文件(通常以 .css 结尾)
    • 右键点击该文件,选择 复制
    • 粘贴一个副本,并重命名为 custom-pdf.css(名称可以自定义,但建议使用英文)
  2. 编辑CSS文件

    • 右键点击你刚创建的 custom-pdf.css 文件
    • 选择 打开方式 → 用文本编辑器打开(推荐使用VS Code、Notepad++或系统自带的记事本/文本编辑)

第三步:添加分页控制CSS代码

  1. 在文件末尾添加以下CSS代码
css 复制代码
/* PDF导出分页控制 */
@media print {
    /* 防止段落、标题、表格等在中间被分页 */
    p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote, figure {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 为标题设置分页前空间 */
    h1, h2, h3 {
        page-break-after: avoid;
        page-break-before: auto;
    }
    
    /* 为代码块添加特殊处理 */
    pre {
        page-break-inside: avoid;
        break-inside: avoid;
        white-space: pre-wrap;
    }
    
    /* 为图片添加保护 */
    img {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 设置页面边距 */
    @page {
        margin: 1.5cm;
    }
    
    /* 为表格行添加保护 */
    tr {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 为列表项添加保护 */
    li {
        page-break-inside: avoid;
        break-inside: avoid;
    }
}

/* 在屏幕显示时也应用部分规则 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote {
    orphans: 3;    /* 段落末尾至少保留3行 */
    widows: 3;     /* 段落开头至少保留3行 */
}
  1. 保存文件
    • Ctrl + S(Windows)或 Cmd + S(Mac)保存文件
    • 关闭文本编辑器

第四步:应用自定义主题

  1. 重启Typora

    • 完全关闭Typora应用程序
    • 重新启动Typora
  2. 选择自定义主题

    • 点击顶部菜单栏的 主题 选项
    • 在下拉菜单中找到并选择你创建的 custom-pdf 主题
    • 如果没有看到,可以尝试重启Typora

第五步:设置PDF导出

  1. 配置导出设置

    • 点击 文件偏好设置
    • 选择 导出 选项卡
    • PDF 部分,确保 使用当前主题 选项被选中
  2. 测试PDF导出

    • 打开一个包含多页内容的Markdown文档
    • 点击 文件导出PDF
    • 选择保存位置,点击 保存
    • 检查生成的PDF文件,确认分页是否正常

备用方案:创建专门的PDF导出CSS

如果上述方法不完全解决问题,可以创建专门用于PDF导出的CSS:

  1. 在主题文件夹中创建新文件pdf-export.css
  2. 添加以下内容
css 复制代码
/* 专门用于PDF导出的样式 */
@media print {
    body {
        font-size: 12pt;
        line-height: 1.5;
    }
    
    /* 强制分页控制 */
    .page-break {
        page-break-after: always;
        break-after: always;
    }
    
    /* 重要内容保护 */
    .no-break {
        page-break-inside: avoid;
        break-inside: avoid;
    }
}
  1. 在Markdown文档中手动添加分页标记
markdown 复制代码
<!-- 在需要分页的地方添加 -->
<div class="page-break"></div>

<!-- 包裹重要内容防止分页 -->
<div class="no-break">
这是一个不会被分页打断的重要段落...
</div>

常见问题解决

  • 如果主题不显示:重启Typora,或者检查文件名是否包含中文或特殊字符
  • 如果CSS不生效:检查CSS语法是否正确,特别是括号和分号是否匹配
  • 如果PDF仍然分页异常 :尝试调整 orphanswidows 的值,或者增加页面边距

这个方案已经帮助很多用户解决了Typora导出PDF时的分页问题。如果仍有问题,可以考虑在Typora官方GitHub仓库提交issue反馈这个bug。

css 复制代码
/* PDF导出分页控制 */
@media print {
    /* 防止段落、标题、表格等在中间被分页 */
    p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote, figure {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 为标题设置分页前空间 */
    h1, h2, h3 {
        page-break-after: avoid;
        page-break-before: auto;
    }
    
    /* 为代码块添加特殊处理 */
    pre {
        page-break-inside: avoid;
        break-inside: avoid;
        white-space: pre-wrap;
    }
    
    /* 为图片添加保护 */
    img {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 设置页面边距 */
    @page {
        margin: 1.5cm;
    }
    
    /* 为表格行添加保护 */
    tr {
        page-break-inside: avoid;
        break-inside: avoid;
    }
    
    /* 为列表项添加保护 */
    li {
        page-break-inside: avoid;
        break-inside: avoid;
    }
}

/* 在屏幕显示时也应用部分规则 */
p, h1, h2, h3, h4, h5, h6, ul, ol, table, pre, blockquote {
    orphans: 3;    /* 段落末尾至少保留3行 */
    widows: 3;     /* 段落开头至少保留3行 */
}
相关推荐
开开心心就好11 小时前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
貂蝉空大17 小时前
vue-pdf-embed分页预览解决文字丢失问题
前端·vue.js·pdf
袁袁袁袁满19 小时前
Python爬虫下载PDF文件
爬虫·python·pdf·python爬虫下载pdf文件
Knight_AL19 小时前
docx4j vs LibreOffice:Java 中 Word 转 PDF 的性能实测
java·pdf·word
夏日白云19 小时前
《PDF解析工程实录》第 14 章|内容流文本布局计算:pdfminer 在做什么,以及它为什么不够
pdf·llm·大语言模型·rag·文档解析
伟贤AI之路19 小时前
原创分享:PDF工具箱-快速合并、拆分PDF以及图片转PDF
pdf·pdf工具
优选资源分享2 天前
PDF Anti-Copy Pro v2.6.2.4:PDF 防拷贝工具
网络·安全·pdf
半熟的皮皮虾3 天前
又重新写了个PDF工具箱-转换office格式/合并/拆分/删除常见操作都有了
python·程序人生·pdf·flask·开源·json·学习方法
waterfeeling3 天前
AGI 论文复现日记:攻克 PDF 解析的“第一公里”
pdf·agi
qq_546937273 天前
PDF工具的天花板!PDF补丁丁:开源免费+无广告,支持Win7~Win11,批量OCR秒完成
pdf·ocr