package jp.crwdev.app.container.pdf; import java.io.File; import java.io.IOException; import javax.swing.JOptionPane; import jp.crwdev.app.gui.DebugWindow; import jp.crwdev.app.interfaces.IImageFileInfoList; import jp.crwdev.app.interfaces.IImageFileScanner; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.parser.PdfReaderContentParser; import com.jmupdf.exceptions.DocException; import com.jmupdf.exceptions.DocSecurityException; import com.jmupdf.pdf.PdfDocument; public class PdfImageFileScanner implements IImageFileScanner { /** ファイルパス */ private String mFilePath; private boolean mSupportJMuPDF = true; private PdfDocument mPdfDocument; private PdfReader mPdfReader; private boolean mSupportGS = true; @Override public boolean open(String path) { if(path.contains(".pdf")){ String err = ""; try { File file = new File(path); if(!file.exists()){ return false; } mFilePath = path; mSupportJMuPDF = false; mSupportGS = false; DebugWindow.log("open pdf " + path); try { mPdfDocument = new PdfDocument(path, 20); mPdfReader = new PdfReader(path); mSupportJMuPDF = true; DebugWindow.log("use JMuPDF"); return true; } catch (DocSecurityException e) { err = e.getMessage(); e.printStackTrace(); } catch (UnsatisfiedLinkError e){ err = e.getMessage(); e.printStackTrace(); } catch (NoClassDefFoundError e){ err = e.getMessage(); e.printStackTrace(); } // GhostscriptUtil gs = GhostscriptUtil.getInstance(); // if(gs.isEnable()){ // gs.open(path); // mSupportGS = true; // DebugWindow.log("use GhostScript"); // return true; // } // else{ // JOptionPane.showMessageDialog(null, "default.iniにGhostScriptのコマンドライン実行ファイルパスを設定して下さい。\n(例: ghostScriptPath=C:/gs/gs9.10/bin/gswin64c.exe)"); // } } catch (OutOfMemoryError e) { err = e.getMessage(); e.printStackTrace(); } catch (DocException e) { err = e.getMessage(); e.printStackTrace(); } catch (IOException e) { err = e.getMessage(); e.printStackTrace(); } if(err.length() > 0){ JOptionPane.showMessageDialog(null, err); } } return false; } @Override public void close() { } @Override public IImageFileInfoList getImageFileInfoList() { if(mSupportJMuPDF){ return new PdfImageFileInfoList(mPdfDocument, new PdfReaderContentParser(mPdfReader)); } if(mSupportGS){ return new PdfImageFileInfoList(GhostscriptUtil.getInstance()); } return null; } @Override public String getOpenFilePath() { return mFilePath; } }