如何解决grip转HTML后wkhtmltopdf生成PDF时标题的本地链接问题?
解决grip转HTML后wkhtmltopdf生成PDF标题锚点变本地路径的问题
方案1:后处理HTML,移除标题里的锚点链接
grip生成的标题会被带heading-link类的<a>标签包裹,直接用工具把这些链接去掉就行:
用sed命令快速处理(Linux/macOS)
先导出HTML,再用sed替换掉标题里的链接标签:
# 先用grip导出HTML grip README.md --export README.html # 移除标题中的锚点链接 sed -i '' 's/<a class="heading-link" href="[^"]*">\([^<]*\)<span.*<\/a>/\1/' README.html
之后用处理后的README.html转PDF即可。
用Python脚本处理(跨平台)
如果sed用着不顺手,写个简单的Python脚本用BeautifulSoup清理:
from bs4 import BeautifulSoup # 读取grip生成的HTML with open("README.html", "r", encoding="utf-8") as f: soup = BeautifulSoup(f.read(), "html.parser") # 遍历所有标题标签,移除锚点链接 for tag in soup.find_all(["h1", "h2", "h3", "h4", "h5", "h6"]): link_tag = tag.find("a", class_="heading-link") if link_tag: # 保留标题文本,删除链接标签 tag.string = link_tag.get_text(strip=True) link_tag.decompose() # 保存清理后的HTML with open("README_clean.html", "w", encoding="utf-8") as f: f.write(str(soup))
运行脚本后用README_clean.html生成PDF。
方案2:让wkhtmltopdf保留锚点不转本地路径
wkhtmltopdf处理本地HTML时会自动把锚点拼接成file路径,通过设置--base-url参数可以强制锚点保持原样:
wkhtmltopdf --base-url "#" README.html output.pdf
或者用about:blank作为基础URL,同样能阻止路径转换:
wkhtmltopdf --base-url "about:blank" README.html output.pdf
内容的提问来源于stack exchange,提问作者td244
相关产品推荐
相关产品推荐

