001    package railo.runtime.text.pdf;
002    
003    import java.io.IOException;
004    import java.util.Set;
005    
006    import railo.commons.io.res.Resource;
007    import railo.commons.lang.SystemOut;
008    import railo.runtime.exp.ExpressionException;
009    import railo.runtime.exp.PageException;
010    import railo.runtime.img.Image;
011    
012    public abstract class PDF2Image {
013            
014            private static PDF2Image instance;
015            
016            public static PDF2Image getInstance()   {
017                    if(instance==null){
018                            try{
019                                    try{
020                                            instance=new PDF2ImageICEpdf();
021                                            SystemOut.printDate("using ICEpdf PDF2Image  Library");
022                                    }
023                                    catch(Throwable t){
024                                            instance=new PDF2ImagePDFRenderer();
025                                            SystemOut.printDate("using PDFRenderer PDF2Image  Library");
026                                    }
027                            }
028                            catch(Throwable t){
029                                    instance=new PDF2ImageJPedal();
030                                    SystemOut.printDate("using JPedal PDF2Image  Library");
031                            }
032                    }
033                    //return new PDF2ImageJPedal();
034                    return instance;
035            }
036            
037    
038            protected static Resource createDestinationResource(Resource dir,String prefix,int page,String format, boolean overwrite) throws ExpressionException {
039                    Resource res = dir.getRealResource(prefix+"_page_"+page+"."+format);
040                    if(res.exists()) {
041                            if(!overwrite)throw new ExpressionException("can't overwrite existing image ["+res+"], attribute [overwrite] is false");
042                    }
043                    return res;
044            }
045    
046            
047            public abstract Image toImage(byte[] input,int page) throws IOException, PageException;
048            public abstract void writeImages(byte[] input,Set pages,Resource outputDirectory, String prefix,String format, int scale, boolean overwrite, boolean goodQuality,boolean transparent) throws PageException, IOException;
049    }