Birthday Card Maker  Birthday Card Maker

go to home page Student Projects full screen, hide local find menu Google search web for more information on this topic jump to foot of page translate this page with Babelfish ©1996-2009 Roedy Green, Canadian Mind Products
This essay does not describe an existing computer program, just one that should exist. This essay is about a suggested student project in Java programming. This essay gives a rough overview of how it might work. I have no source, object, specifications, file layouts or anything else useful to implementing this project.

This project outline is not like the artificial tidy problems you are spoon-fed in school, when all the facts you need are included, nothing extraneous is mentioned, the answer is fully specified, along with hints to nudge you toward a single expected canonical solution. This project is much more like the real world of messy problems where it is up to you to fully the define the end point, or a series of ever more difficult versions of this project, and research the information yourself to solve them.

Everything I have to say to help you with this project is written below. I am not prepared to help you implement it; or give you any additional materials. I have too many other projects of my own.

Though I am a programmer, I don’t do people’s homework for them. That just robs them of an education.

You have my full permission to implement this project in any way you please and to keep all the profits from your endeavor.

Please do not email me about this project without reading the disclaimer above.

This project lets people print birthday cards and other greeting cards either on plain paper or on heavy card stock with a crease across the middle of an 21.59 × 27.94 cm (8½ × 11 in) page. Such paper is available from Hewlett Packard as Printable Expressions.

Aren’t there dozens of such programs out there already? The ones I found on the net wanted money, wanted to install software or your machine, or produced cards of such inferior quality you would be embarrassed to send them. You would set this project up as a free signed Applet on a web page with a Google ad, that would generate revenue. The user does not need to install any software and gets printed cards free.

You print the card on both sides of a page and fold it over in the middle. There are thus four panels. If you make a little model of a card, you will see two of the panels must be printed upside down. Java’s AffineTransform will help you do that.

outside inside
front blank
outside of card inside of card
outside inside
back greeting
The four panels are:
  1. The front. It is a JPG, GIF or PNG scaled to fit, with or without a border. The user provides the image by uploading it. You maintain the aspect ratio. The user may optionally provide some text to overlay the photo.
  2. The inside top is blank. It is the reverse side of (1) the front of the card.
  3. The outside back. Is some text describing what the front cover image is. It is printed on the reverse of (4) the greeting.
  4. The inside bottom, has the greeting and room for a hand signature.
This requires low level coding at the Canvas level where you place the text with drawString and place the image with drawImage.

The user gets to choose the fonts, sizes and colours for the various bits of text. He also gets to choose the background colour for the inside bottom page. You might allow the user to select one of several sizes. A user may need to print a slightly smaller card if his printer can’t print close to the edges of the page. A user might want small cards for gift enclosures.

Every time the user changes a selection, your program immediately repaints the three-non-blank panels. Display the panels right side up, unlike one of the birthday card sites than shall remain nameless.

You can borrow code from FontShower and Screws. You could have a selection of images and suggested greetings for the tongue-tied to select from.

When the image is satisfactory, you print it on the user’s colour inkjet printer on high quality setting, or save it as a large jpg they can then safely embed in a email to form a e-card. You might cannibalise some code from Masker to do this.

A photographer could use this tool to create greeting cards with photos of local sites of interest and sell them to tourist shops. To print or to save a jpg on the user’s hard disk, you must sign your Applet.

Allow the user to print the outside and inside of the card as many times as needed, with explanation of how to insert the paper in the printer for the two printing passes. The crease gives the paper a natural outside and inside. If the user is preparing a stack of Christmas cards for example, he may elect to print all the outsides first then the insides on the backs so he does not need to hand feed each sheet.

If you want such a custom birthday card and have not the patience, you can create it manually with Paint Shop Pro.

I have a half-completed project, a more user-friendly replacement for Java’s JColorChooser. If you tackle this project I might be spurred to complete it and give you the code.

birdays
Fontshower student project
Masker: creates image in RAM saved as PNG files

CMP homejump to top You can get the freshest copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/project/birthdaycard.html J:\mindprod\project\birthdaycard.html
CMP logofeedback Please email your feedback for publication, errors, omissions, typos, formatting errors, ambiguities, unclear wording, broken/redirected link reports, suggestions to improve this page or comments to Roedy Green : feedback email
mindprod.com IP:[65.110.21.43]
view BlogYour face IP:[38.107.191.104]
You are visitor number 11.