Files
daymade acde07ef09 pdf-creator: 自动 DYLD_LIBRARY_PATH + 列表渲染修复 + CSS 改进
- macOS ARM Homebrew 库路径自动检测(不再需要手动 export)
- 添加 markdown 预处理器:确保列表前有空行,防止解析为段落文本
- CSS word-break: break-all → overflow-wrap: break-word(中英混排友好)
- batch_convert.py: 修复跨目录运行时的 import 路径
- SKILL.md: 移除手动环境变量步骤

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 00:26:32 +08:00

80 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""
Batch convert multiple markdown files to PDF.
Usage:
python batch_convert.py file1.md file2.md file3.md
python batch_convert.py *.md
python batch_convert.py --output-dir ./pdfs file1.md file2.md
Requirements:
pip install weasyprint markdown
"""
import argparse
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from md_to_pdf import markdown_to_pdf
def main():
parser = argparse.ArgumentParser(
description='Batch convert markdown files to PDF with Chinese font support'
)
parser.add_argument(
'files',
nargs='+',
help='Markdown files to convert'
)
parser.add_argument(
'--output-dir', '-o',
type=str,
default=None,
help='Output directory for PDFs (default: same as input)'
)
args = parser.parse_args()
output_dir = Path(args.output_dir) if args.output_dir else None
if output_dir:
output_dir.mkdir(parents=True, exist_ok=True)
success = 0
failed = 0
for md_file in args.files:
md_path = Path(md_file)
if not md_path.exists():
print(f"[SKIP] File not found: {md_file}")
failed += 1
continue
if not md_path.suffix.lower() == '.md':
print(f"[SKIP] Not a markdown file: {md_file}")
failed += 1
continue
# Determine output path
if output_dir:
pdf_file = str(output_dir / md_path.with_suffix('.pdf').name)
else:
pdf_file = str(md_path.with_suffix('.pdf'))
try:
print(f"Converting: {md_file} -> {pdf_file}")
markdown_to_pdf(str(md_path), pdf_file)
success += 1
except Exception as e:
print(f"[ERROR] Failed to convert {md_file}: {e}")
failed += 1
print(f"\nCompleted: {success} succeeded, {failed} failed")
sys.exit(0 if failed == 0 else 1)
if __name__ == "__main__":
main()