vx: do-you-enjoy-coding
项目地址: https://github.com/albertofwb/embed_files
合作方式:fork 后在自己的 repo 开发,然后我会将项目改为 private 需要你将自己的项目也改为 private 然后给我读写权限
报价: 2000-3000 工期: 7 天
请合理评估本项目难度,总共 13 种文件类型,如能力有限,只能提供部分格式的支持,按照百分比支付佣金
1
dream10201 2023-06-05 16:28:08 +08:00
前两天才写了个从 excel 中提取 pdf
|
2
albertofwb OP @dream10201 要不要试试
|
3
dream10201 2023-06-05 17:10:39 +08:00
@albertofwb 不用了,兴趣不大,谢谢!
|
4
nolog 2023-06-05 17:15:53 +08:00
为什么会有依赖大小限制?
|
5
albertofwb OP @nolog 这只是本体软件一个很小的部分,太大的话,影响总体加载速度
|
6
Alias4ck 2023-06-05 20:57:56 +08:00 1
纯属好奇, 看了一下 OLE 格式 从中二进制流数据解析图片出来挺麻烦的
虽然市面上有几种库,但是基本没这个功能,大部分是打包 zip,去找后缀名,这种方式对 ppt 可以,word 这种就不生效了( https://github.com/surajForDD/AttachmentsExtractor/) 也有用 C 写( https://github.com/inflex/ripOLE)的,但是他做的也不完整只写了 png signature 的 其他类型的没有 python 也有相关的,但库很久没人维护了 https://github.com/decalage2/oletools 解析图片也有人提过相关的 issue( https://github.com/decalage2/oletools/issues/457) 总的来说,流程应该挺复杂,而且你给的文件格式有的不是 Composite Document File V2 Document. |
7
Alias4ck 2023-06-06 01:25:28 +08:00
|
8
albertofwb OP oletools 这个我在 python 里用过,效果不理想。
你截图中的成功我使用 re 匹配 signature 也能做到 ```python def fetch_img_regex(buf: bytes): # ref https://chujian521.github.io/blog/2018/07/31/%E5%B8%B8%E8%A7%81%E5%9B%BE%E7%89%87%E6%A0%BC%E5%BC%8F%E5%88%86%E6%9E%90%E6%80%BB%E7%BB%93/ pattern_map = { b'\xff\xd8\xff\xe0.*\xff\xd9': 'jpg', b'\x89\x50\x4e\x47\x0D\x0A\x1A\x0A.*\x00\x00\x00\x00\x49\x45\x4E\x44....': 'png' } # FIXME: the re pattern can only find one matched items # then there has more than one images it merge them into single one and the file can not being parsed for pattern, suffix in pattern_map.items(): data = re.findall(pattern, buf, re.DOTALL) if len(data) > 0: return data, suffix raise NoImgContainedException() ``` https://imgur.com/a/QX51prW @Alias4ck |
9
Alias4ck 2023-06-06 09:16:48 +08:00 1
@albertofwb 基本原理应该就是这样从 binary stream 里面匹配 signature 了,大差不差,用 re 去匹配只是其中实现的一种方式, 如果觉得 python olefile 库写的不好,用 rust/c 实现吧 毕竟 ole file 结构摆在那里了
🫤随便做了个 research https://gist.github.com/noahlias/9c90aab66e322977b4a02fa17cb6a809 |
10
albertofwb OP 该外包已经完成
|