有人用他们的 Mac 笔记本电脑给我发送了一堆 PDF 文件,以 Zip 格式。现在我正在尝试提取这些 PDF 文件。
我在 Windows 10 上,我可以提取一个文件夹__MACOSX
,里面有一个包含多个 PDF 文件的文件夹,但是当我以二进制形式看到这些文件时,它们实际上并不是正确的 PDF 格式。
在文件的开头附近,我看到一些纯文本插入,例如ATTR
或com.dropbox.attrs
显然一些二进制插入,可能是那些属性的值。
这是 Zip 的怪癖吗?还是这些文件本来就已损坏,比如发件人从 Dropbox 下载它们时?还是我找错了地方?
该文件夹不是__MACOSX
我应该寻找文件的地方吗?
笔记:我的问题不是理论性的,例如__MACOSX
其目的是什么以及为什么 Apple 不使用标准文件格式。
我的问题纯粹是实际的:我急需他们发送给我的 PDF 文件,那么我如何才能以可用的形式提取它们(不会被那些无用的“属性”插入破坏)(或者我如何才能删除那些插入来修复 PDF 文件?)
我可以想象解决方案的一部分是从某人那里借一台 Mac 笔记本电脑并在那里打开 Zip,但我不知道如何在 Mac 上打开它。或者,如何将它们传输回来——也许用 USB 记忆棒?
请提供简单易懂的分步说明。如果我知道该怎么做,我就不会问了。
答案1
您可能希望将 zip 精简为仅包含 Windows 内容,因为__MACOSX
Windows 上不需要该分支。
请注意,此 cmd 脚本不会进行广泛的检查,而只是您自己增强功能的模板。您应该在工作文件夹中保存一份 MAC 文件的工作“副本”,以避免出现问题并根据需要调整结果。
这里使用拖放示例。脚本位于一个文件夹中,而位于VBExample.zip
其自己的文件夹中。我们可以看到其子文件夹,但它们尚未解压。
之后,zip 文件被备份,并且不需要 fork 就可以减小文件大小,另外还额外保留了解压后的内容(如果你愿意可以删除):
此脚本“零保证”适用于所有 Mac zip 文件。它适用于更常见的变体。始终在您获得的副本上使用。然后根据需要删除工作副本。
if not exist "%~dpn1.zip" goto EOF
pushd "%~dp1"
copy "%~dpn1.zip" "%~dpn1-backup.zip"
tar -xf "%~dpn1.zip"
rd /s /q __MACOSX
tar -a -cf "%~dpn1.zip" "%~n1\*.*"
if not exist "%~dpn1.zip" echo FAILED & pause
REM [optionally remove the unpacked folder] RD /S /Q "%~n1"
:exit
popd
失败的原因可能包括文件名与文件夹名称不匹配,或者新的 zip 文件太小(1 KB)。