Skip to content

jeremysanders/pyemf3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pyemf3 is an updated version of pyemf with support for Python 3.3+

Original author: Rob McMullen
Updater to Python 3: Jeremy Sanders

ABSTRACT
========

pyemf3 is a pure python module that provides bindings for an ECMA-234
compliant vector graphics library.  ECMA-234 is the published
interface for the Windows GDI used in the Microsoft windows
environment and, more importantly, natively supported by the
OpenOffice suite of tools.

http://www.ecma-international.org/publications/standards/Ecma-234.htm



PREREQUISITES
=============

python3 (tested with python 3.10)



QUICK INSTALL
=============

python3 setup.py install



FEATURES
========

Most of the drawing methods of ECMA-234 are supported by pyemf3.

Supported
---------

  Drawing parameters:
    GetStockObject, SelectObject, DeleteObject, CreatePen,
    CreateSolidBrush, CreateHatchBrush, SetBkColor, SetBkMode,
    SetPolyFillMode

  Drawing primitives:
    SetPixel, Polyline, Polygon, Rectangle, RoundRect, Ellipse, Arc,
    Chord, Pie, PolyBezier

  Path primitives:
    BeginPath, EndPath, MoveTo, LineTo, PolylineTo, ArcTo,
    PolyBezierTo, CloseFigure, FillPath, StrokePath, StrokeAndFillPath

  Clipping:
    SelectClipPath

  Text:
    CreateFont, SetTextAlign, SetTextColor, TextOut

  Coordinate system transformation:
    SaveDC, RestoreDC, SetWorldTransform, ModifyWorldTransform

Experimental
------------

  Window/Viewport commands:
    SetMapMode, SetViewportOrgEx, GetViewportOrgEx, SetViewportExtEx,
    ScaleViewportExtEx, GetViewportExtEx, SetWindowOrgEx,
    GetWindowOrgEx, SetWindowExtEx, ScaleWindowExtEx, GetWindowExtEx

Unsupported
-----------

  Palettes
  Bitmaps
  Text metrics



DOCUMENTATION
=============

The most current documentation is always available on the web at
$url/api/index.html

Or, in the source distribution, the directory website/api/ contains a
copy of the api documentation for version $version.  Simply point your
web browser at the index.html within that directory.



EXAMPLES
========

Creating an EMF
---------------

Here's a simple program (available as test-1.py in the distribution)
that connects opposite corners of an 8in by 6in rectangle with lines:

#!/usr/bin/env python3

import pyemf3

width=8
height=6
dpi=300

emf=pyemf3.EMF(width,height,dpi)
thin=emf.CreatePen(pyemf.PS_SOLID,1,(0x01,0x02,0x03))
emf.SelectObject(thin)
emf.Polyline([(0,0),(width*dpi,height*dpi)])
emf.Polyline([(0,height*dpi),(width*dpi,0)])
emf.save("test-1.emf")



Other tests
-----------

There are many other tests included in the examples/ directory in the
source distribution.  After installing the pyemf3 library, you should
be able to run them like this:

$ cd examples
$ python test-drawing1.py

and examine the output file 'test-drawing1.emf' by loading it in
OpenOffice Impress.

Also included in the examples directory is the program
'test--run-all.py' that will run all the tests.

About

Pure Python Enhanced Metafile Library

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages