Multipage TIF to PDF

Recently I’ve continued the porting of iText adding the support for a new image type: multipage tif.

The only problem with this update is that actually it’s really slow and probably with very complex image files it can hang the player for too long. Probably I should modify the ImageElement.getInstance method and make it asynchronous in order to prevent flash player to freeze…

Paying For Assignment Writing Anyway, the current trunk version of purePDF can handle TIF image and here a simple code example:

I Need Help With My Term Paper
1 Sample Introductions For Research Papers 2 3 4 5 6 7 8 Radiohead Paperbag Writer 9 10 11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.events.TimerEvent;
    import flash.net.FileReference;
    import flash.utils.ByteArray;
    import flash.utils.Timer;
    import flash.utils.getQualifiedClassName;
   
    import org.purepdf.elements.RectangleElement;
    import org.purepdf.elements.images.ImageElement;
    import org.purepdf.io.RandomAccessFileOrArray;
    import org.purepdf.pdf.PageSize;
    import org.purepdf.pdf.PdfDocument;
    import org.purepdf.pdf.PdfViewPreferences;
    import org.purepdf.pdf.PdfWriter;
    import org.purepdf.pdf.codec.TiffImage;

    public class TestTIF extends Sprite
    {
        [Embed( source="assets/foxdog_multiplepages.tif", mimeType="application/octet-stream" )]
        private var cls1: Class;
     
        private var document: PdfDocument;
        private var writer: PdfWriter;
        private var buffer: ByteArray;
        private var filename: String;
        private var index: int;
        private var pages: int;
        private var stream: RandomAccessFileOrArray;

        public function TestTIF()
        {
            super();
         addEventListener( Event.ADDED_TO_STAGE, onAdded );
      }
     
      private function onAdded( event: Event ): void
      {
            stage.addEventListener( MouseEvent.CLICK, onClick );
        }

        private function createDocument( subject: String = null, rect: RectangleElement = null ): void
        {
            buffer = new ByteArray();

            if ( rect == null )
                rect = PageSize.A4;
            writer = PdfWriter.create( buffer, rect );
            document = writer.pdfDocument;
            document.addTitle( getQualifiedClassName( this ) );

            if ( subject )
                document.addSubject( subject );
            document.setViewerPreferences( PdfViewPreferences.FitWindow );
        }

        private function onClick( event: Event ): void
        {
            filename = getQualifiedClassName( this ).split( "::" ).pop() + ".pdf";
            var byte: ByteArray = new cls1();
            stream = new RandomAccessFileOrArray( byte );
            var image: ImageElement = ImageElement.getInstance( byte );
            createDocument( "Multi page TIFF Image Example", PageSize.A4 );
            document.open();
            // add the first page to the document
            document.add( image );
            // get the total number of pages
            pages = TiffImage.getNumberOfPages( stream );
         trace("number of pages: " + pages );
            // next page index to add to document (first page is 1)
            index = 2;
            var timer: Timer = new Timer( 100, 1 );
            timer.addEventListener( TimerEvent.TIMER, onTimerComplete );
            timer.start();
        }

        private function onComplete(): void
        {
            stream.close();
            document.close();
            save();
        }

        private function onTimerComplete( event: TimerEvent ): void
        {
            if ( index > pages )
            {
                onComplete();
                return;
            }
            document.add( TiffImage.getTiffImage( stream, index ) );
            index++;
            Timer( event.target ).reset();
            Timer( event.target ).start();
        }

        private function save( e: * = null ): void
        {
            var f: FileReference = new FileReference();
            f.save( buffer, filename );
        }
    }
}


Professional Quality Custom Essays Delivered

Here you can see the result PDF file.
And here the input TIF image.