.:. 草榴社區 » 技術討論區 » 分享一段python语言,能实现Mac系统下将一个pdf文件批量导出所有图片
--> 本頁主題: 分享一段python语言,能实现Mac系统下将一个pdf文件批量导出所有图片 字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
丰色


級別:精靈王 ( 12 )
發帖:5978
威望:736 點
金錢:27257 USD
貢獻:51063 點
註冊:2015-03-07


分享一段python语言,能实现Mac系统下将一个pdf文件批量导出所有图片



複製代碼
  1. python3 << 'EOF'
  2. import Quartz, os
  3. path = os.path.abspath("1.pdf")
  4. url = Quartz.NSURL.fileURLWithPath_(path)
  5. doc = Quartz.PDFDocument.alloc().initWithURL_(url)
  6. doc.unlockWithPassword_("t66y.com")
  7. for i in range(doc.pageCount()):
  8.     page = doc.pageAtIndex_(i)
  9.     bounds = page.boundsForBox_(Quartz.kPDFDisplayBoxMediaBox)
  10.     w, h = int(bounds.size.width), int(bounds.size.height)
  11.    
  12.     cs = Quartz.CGColorSpaceCreateDeviceRGB()
  13.     ctx = Quartz.CGBitmapContextCreate(None, w, h, 8, 0, cs, Quartz.kCGImageAlphaNoneSkipLast)
  14.     Quartz.CGContextSetInterpolationQuality(ctx, Quartz.kCGInterpolationHigh)
  15.     page.drawWithBox_toContext_(Quartz.kPDFDisplayBoxMediaBox, ctx)
  16.     img = Quartz.CGBitmapContextCreateImage(ctx)
  17.    
  18.     out = os.path.abspath(f"1024_{i+1}.jpg")
  19.     dest = Quartz.CGImageDestinationCreateWithURL(
  20.         Quartz.NSURL.fileURLWithPath_(out), "public.jpeg", 1, None)
  21.     Quartz.CGImageDestinationAddImage(dest, img, None)
  22.     Quartz.CGImageDestinationFinalize(dest)
  23.     print(f"已导出: {out}")
  24. EOF
複製代碼


使用说明:
1、1.pdf是文件名,可以带路径,默认就是当前目录下
2、doc.unlockWithPassword_("t66y.com"),如果文件有密码,修改t66y.com为文件加密密码
3、out = os.path.abspath(f"1024_{i+1}.jpg"),可以自定义导出文件名
4、必须安装了python3
5、将上面代码修改完整后,直接复制粘贴到当前目录的终端里执行即可
6、本代码仅支持Mac系统

赞(18)
DMCA / ABUSE REPORT | TOP Posted: 09-06 11:55 樓主 引用 | 發表評論
日文


級別:新手上路 ( 8 )
發帖:167
威望:17 點
金錢:415 USD
貢獻:0 點
註冊:2026-08-21


1024
TOP Posted: 09-06 12:02 #1樓 引用 | 點評
恐龙扛狼


級別:騎士 ( 10 )
發帖:2849
威望:310 點
金錢:15860 USD
貢獻:144 點
註冊:2023-07-16

谢谢分享
TOP Posted: 09-06 12:04 #2樓 引用 | 點評
落尘2023


級別:聖騎士 ( 11 )
發帖:6119
威望:687 點
金錢:18979 USD
貢獻:73 點
註冊:2023-10-18

我也想学排渗
TOP Posted: 09-06 12:55 #3樓 引用 | 點評
張道陵


級別:騎士 ( 10 )
發帖:528
威望:322 點
金錢:3370 USD
貢獻:4755 點
註冊:2023-12-29

引用
引用第3樓落尘2023於2026-09-06 12:55發表的 :
我也想学排渗

好明显你就是高手
TOP Posted: 09-06 12:58 #4樓 引用 | 點評
段子


級別:精靈王 ( 12 )
發帖:1265
威望:276 點
金錢:3848 USD
貢獻:66666 點
註冊:2026-05-05

好东西
TOP Posted: 09-06 17:26 #5樓 引用 | 點評
TMD


級別:天使 ( 14 )
精華:1
發帖:198177
威望:81227 點
金錢:69402 USD
貢獻:0 點
註冊:2011-06-06
認證: 博彩區資深老幹部
2020-10-04

楼主好人 谢谢分享
------------------------
TOP Posted: 09-06 17:37 #6樓 引用 | 點評
烟月


級別:騎士 ( 10 )
發帖:3981
威望:454 點
金錢:5087 USD
貢獻:0 點
註冊:2026-02-27

感谢分享
TOP Posted: 09-06 19:32 #7樓 引用 | 點評
灯火阑珊下


級別:光明使者 ( 14 )
發帖:1508
威望:198 點
金錢:923532006 USD
貢獻:2121000 點
註冊:2014-05-26

支持发帖
TOP Posted: 09-06 19:41 #8樓 引用 | 點評
闪光卤蛋


級別:新手上路 ( 8 )
發帖:792
威望:70 點
金錢:1325 USD
貢獻:0 點
註冊:2018-10-24

感謝分享
TOP Posted: 09-06 19:44 #9樓 引用 | 點評
有点难受


級別:新手上路 ( 8 )
發帖:293
威望:30 點
金錢:339 USD
貢獻:0 點
註冊:2026-08-05

感谢分享
TOP Posted: 09-06 19:50 #10樓 引用 | 點評
史泰龙Stallone


級別:騎士 ( 10 )
發帖:1710
威望:386 點
金錢:12556 USD
貢獻:333 點
註冊:2025-07-14


感谢分享
TOP Posted: 09-06 21:50 #11樓 引用 | 點評
艾比


級別:新手上路 ( 8 )
發帖:781
威望:82 點
金錢:2262 USD
貢獻:0 點
註冊:2025-10-24

谢谢分享
TOP Posted: 09-06 21:54 #12樓 引用 | 點評
干她七炮


級別:聖騎士 ( 11 )
發帖:2750
威望:276 點
金錢:2967 USD
貢獻:30000 點
註冊:2021-10-24

支持一下!
TOP Posted: 09-06 22:22 #13樓 引用 | 點評
写乐保介


級別:聖騎士 ( 11 )
發帖:2920
威望:319 點
金錢:37672281 USD
貢獻:31000 點
註冊:2014-09-24

import fitz  # PyMuPDF
import os

path = os.path.abspath("1.pdf")
password = "t66y.com"

doc = fitz.open(path)
if doc.needs_pass:                      # 判断是否需要密码
    doc.authenticate(password)          # 解锁

for i in range(doc.page_count()):
    page = doc.load_page(i)
    mat = fitz.Matrix(1, 1)            # 1:1 原始分辨率,等同 Mac 版
    pix = page.get_pixmap(matrix=mat, alpha=False)
    out = os.path.abspath(f"1024_{i+1}.jpg")
    pix.save(out, jpg_quality=95)
    print(f"已导出: {out}")

doc.close()

怎能只有MAC的,windows的来啦。
TOP Posted: 09-06 22:48 #14樓 引用 | 點評
科学装逼


級別:精靈王 ( 12 )
發帖:1840
威望:185 點
金錢:92 USD
貢獻:159639 點
註冊:2022-04-01

好东西 感谢分享
TOP Posted: 09-06 22:49 #15樓 引用 | 點評

.:. 草榴社區 -> 技術討論區

快速回帖 頂端
內容
HTML 代碼不可用

使用簽名
Wind Code自動轉換

按 Ctrl+Enter 直接提交