Skip to content

A set of commandline tools for OmniGraffle 6+, for export, translation, replacement of fonts and colors etc. Comes with a plugin API that allows for simple manipulation of items in OmniGraffle documents.

Notifications You must be signed in to change notification settings

bboc/ogtool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OmniGraffle Export tool

A command line tool that allows to export one or more canvases from OmniGraffle into various formats using OmniGraffle AppleScript interface.

Installation

In order to have it successfully installed and working, following is required:

  • OmniGraffle 5
  • python >= 2.6
  • appscript >= 0.22

You can either clone the repository and use the setup tool:

setup.py install

Or using the PIP:

pip install omnigraffle_export

Usage

Usage: omnigraffle-export [options] <source> <target>

Options:
  -h, --help  show this help message and exit
  -c NAME     canvas name. If not given it will be guessed from the target
              filename unless it is a directory.
  -f FMT      format (one of: pdf, png, svg, eps). Guessed from the target
              filename suffix unless it is a directory. Defaults to pdf
  --force     force the export
  --debug     print out debug messages

If the target file exists it tries to determine whether the canvas has been changed. It does that by comparing the checkums. Since the PDF export always results into a different file, it uses the PDF subject attribute to store there a checksum that will be generated by exporting to a PNG format.

Examples

  • Export all canvases into directory figures using EPS

    omnigraffle-export -f eps schemas.graffle figures
    
  • Export canvas named FullModel into a FullModel.svg SVG file:

    omnigraffle-export schemas.graffle FullModel.svg
    
  • Export canvas name FullModel into a my_new_model.pdf PDF file:

    omnigraffle-export -c FullModel -f pdf schemas.graffle my_new_model
    

    or

    omnigraffle-export -c FullModel schemas.graffle my_new_model.pdf
    

    Note: that the ’.pdf’ suffix will be automatically added in the first case.

  • Export all canvases into directory figures using EPS

    omnigraffle-export -f eps schemas.graffle figures
    

LaTeX Support Example

One of the main motivation for this package was to be able to quickly export OmniGraffle canvases and use them in LaTeX. One of the possible setup is following: every time a figure is included add some instruction so it can be later exported from OmniGraffle file. For example using a comment like:

% omnigraffle sources/schemas.graffle figures/CondorKernel.pdf

to export a canvas CondorKernel from sources/schemas.graffle into figures/CondorKernel.pdf as PDF.

\begin{figure}
  \center
  % omnigraflle: sources/schemas.graffle figures/CondorKernel.pdf
  \includegraphics[scale=.5]{images/CondorKernel}
\end{figure}

An example preprocesor in Python using frabric will the be like:

from fabric.api import *
import re

# latex files to process
fnames = ['UCGridRLDecisionModel.tex']
omnigraffle_re = re.compile(r'%\s*omnigraflle:\s*([^ ]+)\s+([^ ]+)')

def _convert(source, target):
    local('omnigraffle-export %s %s' % (source, target))

@task
def schemas():
    '''
    Generate all schemas
    '''

    for fname in fnames:
        with open(fname) as f:
            for l in f:
                m = omnigraffle_re.match(l.strip())
                if m:
                    _convert(*m.groups())

Export on Demand

The omnigraffle-export can be used either in a batch mode or in a more interactive way. For example it can be used to export the currently selected canvas into a file.

Following is an example Python script that will export currently active canvas into a PDF file that has the same name as the canvas and is placed in the same directory as the OmniGraffle document:

#!/usr/bin/env python

import os
import sys
import omnigraffle

og = omnigraffle.OmniGraffle()
schema = og.active_document()

schema_path = schema.path
schema_fname = os.path.basename(schema_path)
schema_dir = os.path.dirname(schema_path)
export_info_fname = os.path.join(schema_dir, '.' + schema_fname[0:schema_fname.rindex('.')] + '.omnigraffle_export')

canvas_name = schema.active_canvas_name()

format = 'pdf'
target_path =  os.path.join(schema_dir, canavs_name + '.' + format)

schema.export(canvas_name, target_path, format=format)

Fancier version can be download here.

About

A set of commandline tools for OmniGraffle 6+, for export, translation, replacement of fonts and colors etc. Comes with a plugin API that allows for simple manipulation of items in OmniGraffle documents.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Python 90.5%
  • HTML 9.4%
  • Makefile 0.1%