C# – Design/print Plastic Card

C# – Design/print Plastic Card
Development of a WYSIWYG software that allow user to design and print both sides of a pvc

(plastic) card, using card printer Fargo Persona c30e and the printer’s SDK.

Software must allow to place shapes, pictures, barcode, labels, background color or image,

read/record magnet stripe (using printer’s sdk).

Main purpose of software is to print a sequence of cards from a database (Access, Mysql, Oracle,

Sqlserver, Postgresql), or from csv file.
So the software must allow dynamic fields:
– dynamic Label, dynamic barcode and dynamic magnet stripe can be loaded from both CSV or

Database
– dynamic picture can be loaded from both a database or a directory of numbered image files.

Requirements:

– Development in C# using Windows Forms
– Provide source-code
– Ribbon UI, using DevXpress Xtrabars component
– Use Bytescout Barcode component
– Use Printer SDK (which I’ll provide)
– Provide a easy way for translating all the software messages, options and controls (the

software will be used in my own language so I’ll have to translate everything).

Detailed tasks that the software must accomplish or allow:

– have a control where the user designs the card, which means the user can add elements to this

control (pictures, labels, shapes, background color, magnet stripe, barcode…)
– The “Card control” mentioned above must look like a card: a white rectangle with black borders

and rounded corners
– design and print only front side, or only back side or both sides of the card
– change card orientation: Portrait or Landscape
– select card size/model: CR-79, CR-80, Custom size (in milimeters)
– Card control must allow user to add following elements:
-> pictures
-> dynamic pictures: which will be loaded from a database and/or a directory with numbered image

file names
-> labels
-> dynamic labels: which will be loaded from a database and/or csv file
-> barcodes
-> dynamic barcodes
-> magnet stripe (only in card back)
-> dynamic magnet stripe (only in card back)
-> rectangle shapes
-> circle shapes
-> ellipse shapes
-> square shapes
-> line shapes
-> card background (which may be a color or an image)
– dynamic fields must be able to be loaded from different columns of different tables. Must support: Access, Mysql, Oracle, SQLServer, PostgreSQL.
– database settings can be saved for each database so the user doesn’t have to type it everytime.
– change shape’s border color
– change shape’s fill color
– change transparency level for shape elements
– fill color can be set to transparent so you see what’s bellow the shape in the card
– easily resize elements (except the magnet stripe)
– easily move elements (except for magnet stripe)
– easily rotate elements (except for the magnet stripe)
– Horizontal and Vertical Rulers with mouse tracking, divided in centimeters (showing milimeters

small marks).
– copy & paste elements from/to both sides of card
– Undo/Redo (50 times) separatelly for both sides of the card
– send an element to back or bring it to front of other elements
– send an element from back side of card to it’s front and vice-versa.
– keep a beautiful visible list of every element placed in the card, where itens can be managed

as well (example: Barcode1: “918209”, Dynamic Barcode1, Text1: “hello”, Text2: “test string”,

Dynamic Picture1…)
– zoom card (in and out)
– show grid for helping user to design the card
– option for snap elements to grid
– show mouse position in statusbar (in centimeters)
– Menu options: new, open, save, configure printer, Print preview, Print, Print All (print all

cards of a dynamic sequence).
– “Configure printer” option must show a printer selection dialog which has the printer names

list, a configure button (which opens the windows default properties dialog for the selected

printer) and the number of copies.
– “Print” option can use the exact same window of “Configure Printer”, but it may have a “Print”

button instead of the “OK” button.
– Both “Configure printer” and “Print” options must allow to show only printers with specific

name (I’ll give you the list of names).
– check if printer has magnetic encoder installed before print a card that has magnetic stripe

element placed in it.
– Simple access control system with 2 levels: administrator and operator. Administrator can do everything. Operator can ONLY print a previous saved design.
– log every action (with datetime). Only administrator can see/clean logs.

Problems you may face and things you should avoid:

– avoid aliasing
– avoid flickering while moving elements
– if you place your elements in a rectangle make sure the rectangle is totally transparent.
– ruler’s mouse tracking may intercept windows mouse moving messages and take a lot of processing which will generate flickering (even if you use double buffering) or screw up ribbon interface
– using windows default printer properties dialog isn’t trivial for c#, so you may use win32 api for that, but it may cause problems for you to open the dialog (memory protection fault) or for you to save it’s settings

If you need any further detail or help let me know.

Leave a Reply

Your email address will not be published. Required fields are marked *