2013年03月07日

javaでword,excelをPDFファイルに変換

このエントリーをはてなブックマークに追加
follow us in feedly
javaでPDFファイルを読み書きするには普通
iTextを使うと思います。

PDF/A features







エラー: パッケージcom.itextpdf.textは存在しません
エラー: パッケージcom.itextpdf.text.pdfは存在しません

の場合
itextpdf-5.3.5.jar をクラスパスに追加すると解消します。

日本語フォント



com.itextpdf.text.DocumentException: Font 'HeiseiKakuGo-W5' with 'UniJIS-UCS2-H' is not recognized.

このエラーは、色々原因があるようなのですが
iText5.0でiTextAsian.jarを使う
以下のように jar を解いて、パッケージ名を変更したのち、
またjarに固めればOKです


iText PDFを使いPDFファイルを生成してみる
次のように「HeiseiKakuGo-W5 with UniJIS-0UCS2-H is not recognized」というエラーが出る場合には、環境変数 CLASSPATH に iTextAsian.jar のファイル名をフルパスで追加すると解決することがある.




フォントにない文字を入れようとしても、何も入らないだけです。 文字化けたりはしません。
1ページがいっぱいになると改ページは、自動的になされます。

pdfファイルの読み込みの方は、

PdfReader pr = new PdfReader( new FileInputStream( new File( file.pdf ) ) ) ;


Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString

bcprov-jdk15on-147.jar をクラスパスに追加します。


getPageContent() , getPdfObject() などは、 pdfファイルが保護されてる場合は,nullしか返ってきません...

getPageContent() でbyte[]型でページごとに内容を得られますが、これをデコードすれば文字列に戻せるんでしょうか



アルファベットの場合は
new String( content, "UTF-8" )
などとしても、一応、文字をテキストで得ることができます....ただし、平文ですんなりとではないですが、

これもファイルが保護されてる場合は内容が取得できません。










WordやExcelファイルをPDFへ変換したいという人は多いみたいですね。
Windowsで標準で、手動で変換できると思いますが...
自動でたくさんのファイルを一度に変換したいのでしょうか?






Javaでexcelファイル(.xlsx)を読む:POIサンプル

javac -cp poi-ooxml-3.8.jar;poi-3.8.jar; PoiTest.java

コンパイルはこれだけで通るのですが、
java -cp poi-ooxml-3.8.jar;poi-3.8.jar;xml-apis-1.0.b2.jar;xmlbeans-2.3.0.jar;poi-ooxml-schemas-3.8.jar;dom4j-1.6.1.jar; PoiTest .xls
実行時にはこれだけjarファイルが必要です。

ところで、このコードでは、Microsoft Office Excel ワークシート (.xlsx)
.xlsx しか読み込めないみたいです

org.apache.poi.POIXMLException:
org.apache.poi.openxml4j.exceptions.InvalidFormatException: Package should
contain a content type part [M1.13]

Microsoft Office Excel 97-2003 ワークシート (.xls) は、読み込めないのです。

Java : Read / Write Excel file (.xls or .xlsx) using Apache POI
Solution : add poi-ooxml-3.8-20120326.jar in classpath.

Excel97-2007は、HSSFWorkbookクラス で扱います。


Wordファイルを扱うには、HWPFDocumentクラス
これを使うには、 poi-scratchpad-3.5-beta3.jar などが必要?
内容を読み取るだけなら WordExtractorクラスなど
これで getParagraphText(); などして内容を取得できますから、 こうやってPDF化すれば良いのでは...

しかしこれがスマートな方法なんでしょうか?
テキストが平文でしか取れず、装飾などと構造化した情報で取れませんが。








javaで Microsoft Officeファイルを変換する、スマートな方法は、
たぶん JODConverter
ではないでしょうか?





トラックバックURL

コメント一覧

1. Posted by 名無しのスマホ   2015年05月07日 18:31
いろいろな方法を教えてくれてありがとうございます。本当に助かりますね。

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
blogchart
QRコード
QRコード
Recent Comments
「最新トラックバック」は提供を終了しました。