26 lines
2.1 KiB
Markdown
26 lines
2.1 KiB
Markdown
# Procreate Viewer
|
|
I use my computer to store all of my backups of my [Procreate](https://procreate.art) 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](https://github.com/weichsel/ZIPFoundation).
|
|
|
|
[MiniLZO](http://www.oberhumer.com/opensource/lzo/) 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](https://github.com/redstrate/procreate-viewer/issues/2) where I break down the format of this file in more detail. Please also check out [jarmovogel's Procreate Viewer](https://github.com/jaromvogel/ProcreateViewer) which helped me understand how to read the actual image data in a Procreate document.
|