LoginSignup
0
0

More than 5 years have passed since last update.

BolbString2Pdf

Last updated at Posted at 2015-07-09

以下は、Blob2Stringで取得したテキストファイルをPDF化にする処理です。


import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Convert2Pdf {
    public static void main(String[] args) {
        final File sqlPdfFile = new File(args[0]);

        if (!sqlPdfFile.isFile()) {
            System.out.printf("ファイルがありません:%s%n", args[0]);
            System.exit(-1);
        }

        if (sqlPdfFile.length() > 0 ) {
            convert2Pdf_fmfcm(sqlPdfFile);
        }
        else {
            System.out.printf("0 Bytesファイル:%s%n", args[0]);
            System.exit(-1);
        }
    }

    static String getFileBaseName(String fileName) {
        String baseName = "";

        int i = fileName.lastIndexOf('.');
        if (i > 0) {
            baseName = fileName.substring(0, i);
        }

        return baseName;
    }

    static String getFileExtName(String fileName) {
        String extension = "";

        int i = fileName.lastIndexOf('.');
        if (i > 0) {
            extension = fileName.substring(i + 1);
        }

        return extension;
    }

    static final String __header__pdf__ = "25504446";
    static final String __header_fmfcm_ = "46434D00";

    static String getFileHeader(File sqlTextFile) {
        String ret = "";

        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(sqlTextFile));
            String line = br.readLine();

            if (line != null) {
                if (line.substring(0, __header__pdf__.length()).equals(__header__pdf__)) 
                    ret = "pdf";
                else if (line.substring(0, __header_fmfcm_.length()).equals(__header_fmfcm_))
                    ret = "fmfcm";
            }

        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                }
            }
        }

        return ret;
    }

    static void convert2Pdf_fmfcm(File sqlTextFile) {
        BufferedReader br = null;
        BufferedOutputStream wr = null;

        String path = sqlTextFile.getParent();
        String name = sqlTextFile.getName();

        if (path == null) path = ".";

        String fileExtName = getFileHeader(sqlTextFile);
        String newFileName = String.format("%s/%s.%s", path, getFileBaseName(name), fileExtName);

        try {
            File pdfFile = new File(newFileName);
            System.out.printf("Convert to: %s%n", pdfFile.getCanonicalFile().getAbsolutePath());

            wr = new BufferedOutputStream(new FileOutputStream(pdfFile));

            br = new BufferedReader(new FileReader(sqlTextFile));
            String line = "";
            while ((line = br.readLine()) != null) {
                byte[] bs = str2hex(line);
//              System.out.println(int2hex(bs));
                wr.write(bs);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (wr != null) {
                    wr.close();
                }
            } catch (IOException e) {
            }
        }
    }

    static byte[] str2hex(String strInt) {
        String safeStr = strInt;

        if (strInt.length() % 2 == 1) {
            StringBuffer w = new StringBuffer();

            w.append(strInt.substring(0, strInt.length()-1));

            w.append("0");
            w.append(strInt.substring(strInt.length()-1));

            safeStr = w.toString();
        }

        List<Byte> w = new ArrayList<Byte>();

        int i = 0;
        do {
            String s = safeStr.substring(i, i + 2);

            Integer n = 0;
            try {
                n = Integer.parseInt(s, 16);
            } catch(NumberFormatException e) {}

            byte b = (byte) (0x000000ff & (n));

            w.add( b );

            i += 2;
        } while(i <  strInt.length());

        Byte[] oa = w.toArray(new Byte[w.size()]);
        byte[] bs = new byte[oa.length];

        for(int k = 0; k < oa.length; k ++){
            bs[k] = oa[k];
        }

        return bs;
    }

    static String int2hex(int i) {
        String s = Integer.toHexString(i & 0xff);
        return (s.length() == 1) ? ("0" + s) : s;
    }

    static String int2hex(byte[] data) {
        StringBuffer buf = new StringBuffer();
        int c = 0;
        for (byte b : data) {
            buf.append(int2hex(b));
            c++;
            buf.append((c == 8) ? " -" : " ");
            buf.append((c >=16) ? "\n" : " ");
            c = (c >= 16) ? 0 : c;
        }
        return buf.toString();
    }

}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0