JavaでPDFファイルをxml変換する
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 1,174
前提・実現したいこと
JavaでPDFファイルをXMLに変換したいです。
単純にXMLに変換し、出力したいのですが、使用するライブラリやコーディングがわかりません。
該当のソースコード
package tika;
import java.io.File;
import java.io.IOException;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
public class tika {
public static void main(String[] args) {
try {
//tikaインスタンスの生成
Tika tika = new Tika();
//コンソール出力
System.out.println(tika.parseToString(new File("/xxx.pdf")));
} catch (IOException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
}
}
}
試したこと
Apache Tikaを使用してテキスト抽出はできたが、XMLにしたい。
補足
Javaはあまり使用したことがなく、今回初めて使用しているので基本的な質問ですみません。。。
よろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
tabulaというOSSを使用して解決することができました。
http://tabula.technology/
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
HTMLの形式で抽出、変換
という事で、外部のライブラリを使ってOKなら、PDF2domを使う手があります。
以下、サンプルコードです。
package com.mycompany.javamavenproject;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.fit.pdfdom.PDFDomTree;
/**
* PDFファイルをHTMLに変換する
* @author Motuo
*/
public class testJava {
public static void main(String[] args) throws IOException, ParserConfigurationException{
//PDFファイルを読込
PDDocument pdf = PDDocument.load(new java.io.File("c:\\temp\\file.pdf"));
//htmlとしてファイルを書き出し
Writer output = new PrintWriter("c:\\temp\\file.html", "utf-8");
new PDFDomTree().writeText(pdf, output);
output.close();
}
}
入力(PDF)
出力結果(HTML)
また、 Apache PDFBox
を使ってDOMの取得・操作も可能です
PDFDomTree parser = new PDFDomTree();
Document dom = parser.createDOM(pdf);
Element root = dom.getDocumentElement();
//ルート要素のノード名を取得する
System.out.println("ノード名:" +root.getNodeName());
//ルート要素の子ノードを取得する
NodeList rootChildren = root.getChildNodes();
System.out.println("子要素の数:" + rootChildren.getLength());
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
質問への追記・修正、ベストアンサー選択の依頼
coco_bauer
2017/09/05 11:19
差し支えなければ、抽出できたテキストの全文を質問に追加してください。それと、作りたいXMLドキュメントの構造も追加してください。これらが判らないことには何も進みませんから。
g_yasu
2017/09/05 11:28
返信ありがとうございます。その通りですね、しかしPDFは公開できない事情がありまして・・・。PDFの構造としては単純に、key,valueが並んで表になっています(ツールで出力されたファイルです)。それをXMLまたはHTMLの形式で抽出、変換できないかなと考えているところです。私が分かっていないだけなのですが、PDFをHTMLのようにタグをつけた状態のテキストに変換するには手間がかかるのでしょうか。