常见场景
- 本地一次性转换(macOS)
单页 PDF 或只转第一页(系统自带 sips 即可):
sips -s format png /path/to/input.pdf --out /path/to/output.png
多页 PDF 转多张 PNG(需安装 Poppler):
brew install poppler
pdftoppm -png -r 300 /path/to/input.pdf /path/to/output_prefix
生成 output_prefix-1.png, output_prefix-2.png ...
Python 方案(适合脚本批量处理):
pip install pymupdf
python3 -c "
import fitz
doc = fitz.open('/path/to/input.pdf')
for i, page in enumerate(doc):
page.get_pixmap(dpi=300).save(f'page_{i+1}.png')
"
- 在 Flutter 项目里实现
当前项目只有 PDF 预览(flutter_filereader),没有 PDF→PNG 转换逻辑。若要在 App 内实现,常见方案:
pdfx / printing — 渲染 PDF 页面为图片
syncfusion_flutter_pdf — 功能较全(注意授权)
服务端转换后下发 PNG