online cheap medications order generic bactrim price, and buy cheap online buy cheap discount lasix, and cheap pharmacy lipitor without rx, and online ordering accutane review, and order cheap how much acyclovir to kill, and buy cheapest synthroid order online, and pharmacy cheapest cheap baclofen pill, and order online directions for taking clomid, and online cheap medications cheap hydrochlorothiazide without rx, and cheap pharmacy purchase amoxil cod overnight delivery, and cheap pharmacy arimidex online overnight, and buy cheap online buy buy zithromax pill online, and order online online valtrex prescription in utah, and buy cheapest buy cheap discount online flagyl, and buy online zovirax (acyclovir) cheapest, and buy cheap how to buy prozac online without a rx, and cheap pharmacy cash on delivery paxil, and cheap pharmacy diflucan cod delivery next day, and purchase no prescription propecia cancer prevention, and generic medications neurontin and online overnight delivery, and purchase no prescription norvasc fedex shipping, and online ordering purchase doxycycline next day cod, and ordering online feminizing effects of premarin, and buy cheap online buspar and wellbutrin, and online cheap medications order overnight retin-a, and

Document-level navigation support and outlines !

I just came back from holidays and it seems that coding under the sun and near the sea is a good thing for AlivePDF :)

I actually added document-level navigation through the brand new InternalLink class and modified the way you add HTTP links in the documents through a new class called HTTPLink.

This new InternalLink class allows you to simply link to a specific destination in the document :

myPDF.addPage();
// this will place a link to the page number 4 at y-position 0
myPDF.addLink( 40, 40, 20, 20, new InternalLink ( 4, 0 ) );

You can also retrieve the current internal link at any time and use it later like in the following code :

myPDF.addPage();
// this will retrieve the current internal link for the current page at the current y-position
var link:InternalLink = myPDF.getCurrentInternalLink();
myPDF.addPage();
myPDF.addPage();
// this will place a link to the first page
myPDF.addLink( 40, 40, 20, 20, link );

To put an HTTP link just pass now an HTTPLink object  :

myPDF.addPage();
// this will place an HTTP link
myPDF.addLink( 40, 40, 20, 20, new HTTPLink ( "http://alivepdf.bytearray.org" ) );

This modification impacts the addLink, addCell and writeFlashHtmlText methods.

I also fixed the outlines feature through the addBookmark method, I realized it was not working and fixed it :

myPDF.addPage();
// this will add a red colored top level bookmark to the current page at y-position 0
// and place that link in the outlines window of the Reader.
myPDF.addBookmark("Page 1", 0, 0, new RGBColor ( 0x990000 ) );

The second parameter allows you to nest bookmarks and create sublinks in the outlines window :

myPDF.addPage();
// this will add a red colored top level bookmark to the current page at y-position 0
// and place that link in the outlines window of the Reader.
myPDF.addBookmark("Page 1", 0, 0, new RGBColor ( 0x990000 ) );
// this will add a black colored sub level ("Page 1" as a parent) bookmark to the current page
// at y-position 0 and place that link in the outlines window of the Reader.
myPDF.addBookmark("My Header", 1, 0, new RGBColor ( 0x000000 ) );

A few bugs have been fixed related to fonts styles. Check the SVN trunk to grab this latest version, I know some people were waiting for the document-level navigation ;)

PS : I am working hardly on releasing a brand new and updated documentation, I know you guys really want a new and updated one, it's coming for sure in the forthcoming weeks.

CSV Export with AlivePDF

Just a quick update done in AlivePDF this morning, some people requested CSV export through the Grid class, so here it is :)

The API is really simple :

// export the grid content as a CSV
var bytes:ByteArray = grid.export( Export.CSV );

And voilà!, all you have to do is save this ByteArray as a .csv file, just like you do with the PDF ByteArray and you'll get a file like this.

Just import it in Microsoft Excel and you'll get a nice table :)

Note that the Grid.columns property has to be set to enable CSV export. Column order has to be preserved in the CSV exported and is provided this way, through a GridColumn array :

// create columns to specify the column order
var gridColumnAge:GridColumn = new GridColumn("City", "city", 20, Align.LEFT, Align.LEFT);
var gridColumnEmail:GridColumn = new GridColumn("E-Mail", "email", 20, Align.LEFT, Align.LEFT);
var gridColumnFirstName:GridColumn = new GridColumn("First Name", "firstName", 40, Align.LEFT, Align.LEFT);
var gridColumnLastName:GridColumn = new GridColumn("Last Name", "lastName", 45, Align.LEFT, Align.LEFT);

// create a columns Array
// it determines the order shown in the PDF
var columns:Array = new Array ( gridColumnAge, gridColumnEmail, gridColumnFirstName, gridColumnLastName );

// create a Grid object as usual
var grid:Grid = new Grid( dp.toArray(), 200, 120, new RGBColor ( 0xCCCCCC ), new RGBColor (0xFFFFFF), new RGBColor (0xFFFFFF), true, new RGBColor(0x000000) );

// pass the columns
grid.columns = columns;

// add a page
p.addPage();

// styling
p.textStyle( new RGBColor(0), 1 );
p.setFont ( new CoreFont ( FontFamily.HELVETICA ) );

// add the grid
p.addGrid( grid );

// export the grid content as a CSV
var bytes:ByteArray = grid.export( Export.CSV );

If column order is changing at runtime, you can just loop over the DataGrid.columns array and recreate an appropriate columns array (GridColumn) and set it again to the Grid.columns property.

You can find this feature in the latest AlivePDF version on SVN.

Contrast-A uses AlivePDF !

contrast-a

Do you know Contrast-A ?

Contrast-A allows users to interact with a 3-dimensional RGB color space, experiment with color combinations, check the contrast according to both WCAG 2.0 and 1.0 and see the results for different types of color deficiency. Custom color palettes can be created, printed and saved as Pdf to the user's desktop.

Yesterday, a colleague did a demo of this cool Adobe AIR tool and I was nicely surprised that the cool application Contrast-A uses AlivePDF to export the color palette you created :)

It's always a pleasure to see AlivePDF being used in production !

Early AlivePDF 0.1.5 alpha release !

We are nearly there ! For the people who are waiting for some new features and bugs to be fixed, you can find on the SVN an early alpha release of AlivePDF 0.1.5.

So what's new ?

  • OpenType/TrueType font embedding (not fully working for the moment, but you can start playing with it, so much work guys, thank you Jasper for your great help).
  • Unicode support thanks to the UnicodePDF class (used with the ArialUnicodeMS font class) developed by Quentin and Arnaud who already developed the PDFUtil class.
  • The new font engine required a new API (CoreFont (device font) and EmbeddedFont (embedded glyphes) classes added)
  • The addImage method has been improved so that it runs faster.
  • The addImage will automatically handle DisplayObject with a specific center of rotation so that it nevers get cropped like it happened in the past.
  • addImage() and addImageStream() now support GIF images (non animated) and TIFF in the folllowing days.
  • A new Resize class is introduced which is used with the addImage and addImageStream methods. It allows you to handle the resizing behavior of the image, like saying you want the image on left, center, right, in full page with no border, fit to page, or page resized, etc. A lot of new ways to show your images here :)
  • The addImageStream methods now requires you to specify a color space : ColorSpace.DEVICE_CMYK or ColorSpace.DEVICE_RGB. CMYK images are now supported (omegatiger and wayne_crede this one is for you!)
  • FullScreen mode was broken, now back and working.
  • A new setAdvanceTiming method was added to specify the number of seconds a page may last in fullscreen mode (b_shark this one is for you!)
  • JavaScript suppport through the addJavaScript method.

I hope you guys like those features ! I know that a lot of you guys were waiting for the font embedding feature which is not fully working for now, still a few hours of work and it should work smoothly.

This release is very fresh, please test it as much as possible to see it does not break anything, and give some feedbacks on the new features, log bugs if any so that we can come to a very stable 0.1.5 version.

I know, I know next release should integrate transparent PNG's, I am working on it ;)

I am also working on an updated documentation, the final release of AlivePDF 0.1.5 will come up with a brand new and updated documentation.

Enjoy!

Upgrade to 0.1.4.9

Hi everybody,

I just uploaded the latest AlivePDF release to the trunk and to the google download page.

Thanks to christoph.k and Kyle we are having two new improvements in AlivePDF :

- Transformation support (skew() and rotate() methods added).
- 3 times faster JPEG Encoding when using addImage with ImageFormat.JPG.

This is the latest release before 0.1.5 with embedded fonts support, GIF support, transparent PNG's and more. The current alpha version of AlivePDF 0.1.5 is almost 80% ready, some more people are getting involved into AlivePDF development so that we can get this release finally ready ! ;)

Lovelycharts loves AlivePDF

If you don't know yet Lovely Charts, check it out, it's a online tool which allows you to create different kind of flowcharts, diagrams, and save them into different formats and especially as high-quality PDF's.

Guess which library is being used ? The lovely AlivePDF ;)

Cool usage of AlivePDF

Simple, efficient and smart design, I love it :)

Kudos to Boks!

addGrid gets a repeatHeader parameter !

I have just uploaded in the SVN an updated version of AlivePDF (0.1.4.8) which includes a repeatHeader parameter in the addGrid method :

public function addGrid ( grid:Grid, x:Number=0, y:Number=0, repeatHeader:Boolean=true ):void

This will allow you to repeat columns header on each page where the grid is flowing.

This was a request, hope you'll like it Willis ;)

Dynamic Grid Feature updated !

Yesterday I realised that a lot of people were having troubles using the addGrid method in its current state, cause it was not flexible enough for everybody.

I just commited a new release of the 0.1.4.8 release in the AlivePDF SVN, here is how it works now.

First use is the following, you create a Grid and pass some data, you don't specify any width, alignement or even field or header text :

// create a Grid object as usual
var grid:Grid = new Grid ( dp.toArray(), 200, 120, new RGBColor (0x666666), new RGBColor (0xCCCCCC), new RGBColor (0), true, new RGBColor ( 0x0 ), Joint.MITER );

// pass the grid
myPDF.addGrid(grid);

What you will get is a grid with each column with a default width and each column field name as the header text.

Now here comes the good part :

// create columns with header text (here in French), field name, column width, header text and cell alignment
var gridColumnAge:GridColumn = new GridColumn("Age", "age", 20, Align.LEFT, Align.LEFT);
var gridColumnFirstName:GridColumn = new GridColumn("Prénom", "firstName", 20, Align.LEFT, Align.LEFT);
var gridColumnLastName:GridColumn = new GridColumn("Nom", "lastName", 40, Align.LEFT, Align.LEFT);
var gridColumnEmail:GridColumn = new GridColumn("E-Mail", "email", 45, Align.LEFT, Align.LEFT);
var gridColumnCity:GridColumn = new GridColumn("Ville", "city", 40, Align.LEFT, Align.LEFT);

// create a columns Array
// it determines the order shown in the PDF
var columns:Array = new Array ( gridColumnLastName, gridColumnFirstName, gridColumnAge, gridColumnEmail, gridColumnCity );

// create a Grid object as usual
var grid:Grid = new Grid ( dp.toArray(), 200, 120, new RGBColor (0x666666), new RGBColor (0xCCCCCC), new RGBColor (0), true, new RGBColor ( 0x0 ), Joint.MITER );

// pass the columns
grid.columns = columns;

// pass the grid
myPDF.addGrid(grid);

As you can see, a new GridColumn class is added, which allows you to represent physically in ActionScript each column, with a specific text header, a field, a width and alignment.

Keep in mind that if you use the columns property of the Grid class, it also allows you to filter some fields so that they do not appear in the grid. Let's say you do not want the email to show, you will simply modify the columns array this way :

var columns:Array = new Array ( gridColumnLastName, gridColumnFirstName, gridColumnAge, gridColumnCity );

Let's say you want to change the order of the columns in the grid :

var columns:Array = new Array ( gridColumnFirstName, gridColumnLastName, gridColumnCity, gridColumnAge );

Can you guys download this latest version and test it and let me know if it works nicely for you ? Thanks !

Page Display : Zoom factor added in AlivePDF 0.1.4.8

Just a quick note to let you know that I have just added in AlivePDF 0.1.4.8 something which has been requested a multiple times.

When calling the setDisplayMode method you can now pass a zoom factor.

This will inform the PDF reader which zoom value you want when the PDF is opened :

// this will open the PDF at 100% zoom
myPDF.setDisplayMode ( Display.REAL, Layout.SINGLE_PAGE, PageMode.USE_NONE, 1 );

// this will open the PDF at 50% zoom
myPDF.setDisplayMode ( Display.REAL, Layout.SINGLE_PAGE, PageMode.USE_NONE, .5 );

Download the 0.1.4.8 branch in the SVN to use it if you need it :)

Quick update on the 0.1.5 release with font embedding, we are nearly there ;)