何度やっても同じ

ただの日記

GAEJ PDFのテキスト抽出

Apache PDFBoxを使ってPDFのテキスト抽出を行おうとすると、java.awtパッケージのクラス(GAEJのホワイトリストに含まれない)を使っている関係でエラーが発生します。テキスト抽出にjava.awt関連クラスは不要なので、使用個所を削りまくってGAEJ上で動作するjarを作りました。ベースにしたバージョンは1.7.1です。

デモサイトのソースコードslim3
public class UploadController extends Controller {

  @Override
  public Navigation run() throws Exception {

    BlobstoreService blobstore = BlobstoreServiceFactory.getBlobstoreService();
    Map<String, List<BlobKey>> map = blobstore.getUploads(request);
    List<BlobKey> keys = map.get("pdfFile");
    if (keys == null || keys.isEmpty()) {
      return html("<p>ファイルが選択されてないかも</p>", "utf-8");
    }

    BlobKey key = new BlobKey(keys.get(0).getKeyString());
    PDFParser parser = new PDFParser(new BlobstoreInputStream(key));
    parser.parse();
    PDDocument doc = parser.getPDDocument()
    PDFTextStripper stripper = new PDFTextStripper();
    response.setContentType("text/plain; charset=utf8");
    stripper.writeText(doc, response.getWriter());

    blobstore.delete(key);

    return null;
  }
}