From 7027f3a6afec292a82ab9c84270186e9871c239f Mon Sep 17 00:00:00 2001 From: redstrate Date: Thu, 12 Mar 2020 08:21:24 -0400 Subject: [PATCH] Update README with new file format information --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index c0b25a5..1b5e4d2 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,26 @@ # 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. +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 app contains a document-based viewer that associates itself with the `.procreate` file format. It also contains a Quick Look -preview and thumbnail generator, all written in Swift and Cocoa. Please note that since there is almost no documentation on how -these new generator api's work, they might be broken. +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. -This app uses the Swift Package Manager to handle our sole dependency, [ZipFoundation](https://github.com/weichsel/ZIPFoundation). +## 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: ``` -- (Multiple folders named randomly via UUID) +- (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. These are most likely the timelapse files. -- Document.archive - ??? + - 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. ``` -We simply extract the zip file in memory, and display the `Thumbnail.png` found in the file. Notice how I said these thumbnails are -'low-quality', and even though they may seem low-quality when blown up on a Retina display like most iPads, these tend to be more -than servicable for thumbnail usage. +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.