/procreate-viewer

macOS app to view Procreate documents

Primary LanguageSwiftMIT LicenseMIT

Procreate Viewer

I use my computer to store all of my backups of my Procreate documents (since they seem reluctant to add actual cloud saving), but I can never figure out which documents are which, so I created this app to alleviate this dilemma. This app is written in Swift and supports the new QuickLook generator API.

This project includes a viewer app that can render your Procreate documents at full resolution. It also contains a Quick Look preview and thumbnail generators as well. Please note that since there is almost no documentation on how these new generator api's work, they might be broken. Once you install the app, all .procreate documents will automatically open with it.

Dependencies

We use the Swift Package Manager to handle our only Swift dependency, ZipFoundation.

MiniLZO is used to decode image data but has already been included in the repository and is built with the project.

Procreate File Format

All .procreate files are actually standard ZIP files. So extracting them leads to something like this:

- (Layer folders named by their UUID)
  - Contains .chunk files, presumably the actual pixel canvas data for the document.
- QuickLook [Folder]
  - Thumbnail.png - Low-quality screenshot generated by Procreate.
- video [Folder]
  - segments [Folder]
    - segment-X.mp4, where X is a number starting from 1.
- Document.archive - NSKeyedArchive containing layer information along with other document information like canvas size.

In order to parse Document.archive, first decode the binary plist format. Then you'll want to access the $top object to access the index of the SilicaDocument object in the $objects array. This is where most of your document information belongs. If you want more information please read #2 where I break down the format of this file in more detail. Please also check out jarmovogel's Procreate Viewer which helped me understand how to read the actual image data in a Procreate document.