AlivePDF (0.1.5 RC) Font Embedding Support refactoring and more :)

I am happy to announce that AlivePDF 0.1.5 is getting better and better. More than font embedding support which is working now, I have just uploaded on the SVN the latest version with gradients (not 100% complete) and barcode support. Apart from that, some important code cleaning and refactoring has been done, some new API's have been introduced like setStartingPage, or even addEPSImage to embed Adobe Illustrator files on a page.

I tried to address all the bugs you guys posted on the google code issue page (thanks everybody for taking the time to post bugs!). Some of them may not fixed yet, but I am happy to say that the most recurrent ones have been addressed. I will post in the following days some details about the new API's, examples, demo application, to show you how to use the latest API's especially for font embedding.

Next on the list is SWF embedding support and the famous alpha images support, which I have time now to focus on.

Stay tuned, there is even more coming ;)

Santa Claus and AlivePDF

Christmas-gift-red-bowRecently, I saw a message from wayne on the AlivePDF forum, asking for some gifts related to AlivePDF. It made me smile cause actually I was able to spend a whole day on the embedding font problem and finally made it to work :) It seems like Santa Claus is bringing font embedding to AlivePDF, finally!

Here is a PDF generated just now with the upcoming AlivePDF update ;)

I will post that new release to the SVN in a few days, I am heading to New York for a few days for New Year's eve, Happy new year to everyone, 2010 will rock with AlivePDF!

AlivePDF used in Balsamiq Mockups

If there is one AIR application that I love, it's called Mockups from Balsamiq.
In September, Peldi the creator of this great tool asked if it was possible to add internal link support and fix the outlines feature in AlivePDF in order to add PDF export to Mockups.
This was added and Mockups, and there you go :

newexporttopdfmenu

Mockups is now able to export nice and interactive PDF's to print or illustrate your mockups.
Here is an example of what Balsamiq Mockups could generate :)

The end of the linux bug : writeMultiByte()

Just a very quick note to let you know that the forthcoming Flash Player 10.1 is fixing the writeMultiByte on Linux. We will keep the fix in AlivePDF to ensure backward compatibility with previous players, but it's just good news to see this bug fixed if you have different projects relying on this method ;)

Some Alchemy in AlivePDF !

Here is a great news for AlivePDF, I am currently considering using Alchemy to handle all the fonts parsing (TrueType/OpenType) through a c lib called TTF2PT1. This is the cool thing with Alchemy, any c or c++ lib can be compiled to AVM2 bytecode and used in the Flash Player. If you know the TTF2PT1 lib, it handles all the font parsing that AlivePDF is almost doing. The cool thing is that this lib is fully working and the extraction of glyph widths is perfect and AlivePDF will benefit from that.

If you guys remember the current problem we have in AlivePDF when embedding fonts, glyphs may overlap and be incorrectly positioned, this lib will fix all that and handle even complex fonts. The cool thing is that thanks to Alchemy, this c lib will run and do all its work in the Flash Player and smoothly interact with the AlivePDF core engine.

Such a decision could mean that the final release of AlivePDF with complete and fully working font embedding support will be Flash Player 10 only, as Alchemy is Flash Player 10 only. I know you guys may be against that, so the font embedding logic will be given as a seperated SWC than you can link as an extension of AlivePDF so that the core PDF engine from AlivePDF stays fully compatible with Flash Player 9.

So now, let's see a demo, if you download TTF2PT1 and ask to generate the .AFM file for a font with the following command (-a MyFont.ttf) you'll end up with an AFM file (Adobe Font Metrics) which is gold for AlivePDF cause it gives all the informations needed for embedding a font in a PDF.

Click anywhere in the SWF below, the C lib will be called to extract the font characteristics (from a MyriadWebPro.ttf file) and produce an nice AFM file :

A Flash animation should have appeared here, but it seems that your browser has an older version of the Flash Player or it is not installed at all. Please, install the last release of the Flash Player now, then reload this page.

Ok, I admit it, nothing really exciting but believe me, it's a huge step for AlivePDF! :)

Import EPS files in AlivePDF!

Here is an upcoming feature I added today to AlivePDF, which will allow you to use EPS assets (.ai or .eps) on pages. This is a very cool feature to embed vector content :)

A new method addEPSImage will be available which takes an EPS file and render it on the current page.

myPDF.addPage();
myPDF.addEPSImage ( new epsFile() as ByteArray, 5, 5 );

The first release will not handle everything, but complex artwork will be easily embeddable, here is an example of what I just generated (with an .ai file from Adobe Illustrator) with the forthcoming AlivePDF release ;)

Import existing PDF documents in AlivePDF!

A few days ago, I posted a little poll about adding templates support in AlivePDF, yesterday I was browsing the web and came across this post from Gonzalo Huerta-Canepa. Gonzalo ported the great FPDi libray, which allows you to import an existing PDF document and use it as a template, which is very interesting and a much request feature. Yesterday night, Gonzalo joined the AlivePDF team, his AlivePDF extension will be added in the official AlivePDF trunk, as usual the library is extending the core PDF class, which means that this will not impact the core PDF class therefore, this will not add extra size to the core PDF engine. So feel free to use it or not, no tight coupling here. I hope you guys are excited about this AlivePDF extension! 27 jan 2010 - purchase generic xanax online buy xanax diet pills buy soma overnight COD soma online delivery phentermine 37.5mg diet pills cheap phentermine cod saturday delivery cheapest tramadol overnight very cheap tramadol cod Viagra no prior script order Viagra without rx generic cialis 20mg 30 buying cialis online buy generic Ambien no prescription buy Ambien usa cod cheapest valium online buy valium without prescription fioricet shipped cod fioricet no prescription no member fees cheap Meridia delivery fedex Meridia online next day fda approved xanax online buy Xanax with c.o.d. soma without script cheap soma without prescription phentermine 37.5 mg tablets buy phentermine 37.5 online buy cheap tramadol online 35 tramadol online generic viagra without prescription sales buy viagra discount cialis levitra viagra cialis online cod online ordering ambien cheap order prescription ambien cheap valium uk canada Valium no a rx order fioricet without prescription from us buy fioricet online without a prescription and no membership buy cheap online pharmacy Meridia buy Meridia prescription online

AlivePDF at Adobe Max ‘09 – Session video

I just posted on my blog the session Michael and I did at Adobe Max '09 in Los Angeles.
It contains a section about AlivePDF and other cool stuff, hope you guys will like it.

LovelyCharts Interview

I created a new section called "Interviews" where I will post interviews about people using AlivePDF in their developments.
To celebrate the first interview, here is one from Jerome Cordiez, the author of LovelyCharts.

beginBitmapFill() added to AlivePDF!

Just a quick note, to tell you that while flying back from Adobe Max '09, I added the beginBitmapFill() (Drawing API) method in AlivePDF.

Code is very simple, just like the Flash Player native Drawing API :

// create the surface
var surface:BitmapData = new Star (0,0);
// begin filling with the bitmap
p.beginBitmapFill( surface );
// draw the shape, filled with bitmap
p.drawRoundRectComplex( new Rectangle ( 0, 0, 545, 770 ), 16, 16, 16, 16 );
// stop filling
p.endFill();

You would get the following result :

beginBitmapFill

You can also pass a Matrix object to apply bitmap transformations as the second parameter of the beginBitmapFill() method just like the native one.

Hope you'll like it ;)

Check the latest SVN update to try it.