Multipage TIF to PDF

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

go to site 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 see url ImageElement.getInstance method and make it asynchronous in order to prevent flash player to freeze…

see Anyway, the current trunk version of purePDF can handle TIF image and here a simple code example:

http://www.hoplites.com.mx/business-plan-smart/ business plan smart
1
2
3
4
5
6
7
8
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 );
        }
    }
}


get

http://www.lakecharlesclinicaltrials.com/dissertation-using-secondary-data/ dissertation using secondary data Here you can see the result PDF file.
And here the input TIF image.