2

I am trying to use AlivePDF to save a chart into a .pdf file. However, when I try to save my chart, it ends up clipping half of the chart in the pdf so it isn't even fully visible. It seems that the screencapture that AlivePDF took to generate my pdf was too small.

I am trying to get a chart from a sample to work with sample code for using alivepdf that I picked off the web.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
        <![CDATA[
            import org.alivepdf.pages.Page;
            import org.alivepdf.layout.Resize;
            import org.alivepdf.pdf.PDF;
            import org.alivepdf.layout.Orientation;
            import org.alivepdf.layout.Size;
            import org.alivepdf.layout.Unit;
            import org.alivepdf.display.Display;
            import org.alivepdf.saving.Method;
            import org.alivepdf.fonts.FontFamily;
            import org.alivepdf.fonts.Style;
            import org.alivepdf.colors.RGBColor;

            private var myPDF:PDF;

            function generatePDF ( e:MouseEvent )
            {
                myPDF = new PDF ( Orientation.LANDSCAPE, Unit.MM, Size.A4 );
                myPDF.setDisplayMode ( Display.FULL_WIDTH );             
                myPDF.addPage();
                myPDF.addImage (myChart);
                myPDF.save( Method.REMOTE, "http://alivepdf.bytearray.org/wp-content/demos/create.php", "drawing.pdf");
            }
        ]]>
    </mx:Script> 
        <mx:XML xmlns="" id="myData"> 
        <items>
            <item year="1960" rain="92" />
            <item year="1961" rain="192" />
            <item year="1962" rain="32" />
            <item year="1963" rain="52" />
            <item year="1964" rain="112" />
            <item year="1965" rain="52" />
            <item year="1966" rain="88" />
            <item year="1967" rain="52" />
            <item year="1968" rain="66" />
            <item year="1969" rain="39" />
            <item year="1970" rain="192" />
            <item year="1971" rain="182" />
            <item year="1972" rain="177" />
            <item year="1973" rain="179" />
            <item year="1974" rain="198" />
            <item year="1975" rain="207" />
        </items>
    </mx:XML>
        <mx:XMLListCollection id="rainData" source="{myData.children()}" />

        <mx:Button horizontalCenter="0" click="generatePDF(event)" label="Generate PDF" id="generate_btn" />
        <mx:BarChart id="myChart"  
                        width="100%" height="100%"
                        dataProvider="{rainData}">

            <mx:verticalAxis>
                <mx:CategoryAxis id="yearAxis" categoryField="@year" />
            </mx:verticalAxis>

            <mx:horizontalAxis>
                <mx:LinearAxis id="linAxis" minimum="0" maximum="200" />
            </mx:horizontalAxis>

            <mx:series>
                <mx:BarSeries yField="@year"  xField="@rain" displayName="Rain"/>
            </mx:series>
        </mx:BarChart>
</mx:Application>

Any help on getting my entire chart to show in the .pdf file would be great. It's annoying that I can't figure out something this simple.

FlexMan
  • 25
  • 1
  • 8
  • Is your chart wider/taller than the width/height of an A4 page in landscape mode? Try playing with the "addImage" size values and see what happens. You might run into problems when converting pixels to "Unit.MM". – Glenn Jan 12 '10 at 21:21
  • The width and height are both set to 100% so the values of them aren't hardcoded. – FlexMan Jan 13 '10 at 01:57
  • Yes. So if your screen is 1400px wide, your image will be roughly 1400px wide. How does that translate to Unit.MM? What was the result of forcing the size on the addImage call? – Glenn Jan 13 '10 at 21:11

1 Answers1

2

Instead of:

myPDF.addImage (myChart);

try:

myPDF.addImage(myChart,null,0,0,myPDF.getMargins().width,myPDF.getMargins().height);

-Deepak

Deepak MS
  • 21
  • 2