[disclaimer]
If you try this, be sure to try generating a couple paper wallets and actually importing the private keys into your altcoin wallet to verify that the private keys match the addresses. If you do the math right they should, but it's always best to be safe before sending money to one of these.
[/disclaimer]
Well, when I say easy, I mean easy for someone who knows a little Javascript (and I don't know a whole lot of Javascript) and don't mind looking at the source code for whatever coins you want.
The main things you'll need to edit are the network version byte and the private key prefix byte. To get the network version byte, look at the source code for whatever altcoin you're trying to make a paper wallet generator for (either a local downloaded copy of the source code, or just look on GitHub). You're looking for "src/base58.h" somewhere around like 280, you should see something like this:
PUBKEY_ADDRESS = 50
The number will be different for every coin, the example above is from the coin I made a paper wallet generator for since I'm looking right now at the changes I had to make.
The value you see for PUBKEY_ADDRESS is the network byte. Add 128 to that number to get the private key prefix, then (using Windows calculator or whatever method you prefer) convert both numbers to hexadecimal numbers. Again, for the coin I made a paper wallet generator for, the values would be:
Network version byte = 50 decimal = 32 hex (or 0x32)
Private key prefix = 178 decimal = b2 hex (or 0xb2)
Now, open bitaddress.org.html and search for the following two lines:
Bitcoin.Address.networkVersion = 0x00; // mainnet
and a little further down:
ECKey.privateKeyPrefix = 0x80; // mainnet 0x80 testnet 0xEF
Change both of these values to the version byte and private key prefix of your altcoin of choice.. again in my example, they would be:
Bitcoin.Address.networkVersion = 0x32; // mainnet
and
ECKey.privateKeyPrefix = 0xb2; // mainnet 0x80 testnet 0xEF
The last thing you need to do to make the code work (without editing the graphics) is to search for every occurrence of:
return (ECKey.privateKeyPrefix == 0x80)
and replace the 0x80 with the value you set for ECKey.privateKeyPrefix above. There should only be 2 or 3 places where you have to make this edit.
As far as making it work, that's really all there is to it, just do some simple math and change a couple numbers in the bitaddress code.
Editing the graphics is a bit more tricky since they're base64 encoded inline with the HTML. You'll need to create a graphic the right size for the paper wallet (or just find the SVG or PSD of the graphic bitaddress uses and edit that.. but I don't remember where I downloaded that), save it as a PNG file and find a way to base58 encode it. Then search for
<img id='papersvg'
in the HTML source code and replace the long and seemingly random string of text after
data:image/png;base64,
with the equally long and seemingly random string of text you got as a result of base64 encoding your PNG.