web-dev-qa-db-ja.com

PDF Java

PDFページを画像(PNG、JPEG/JPG、またはGIF)に変換します。ページ全体のサイズで変換します。

Javaを使用してこれをどのように行うことができますか?これを達成するために利用できるライブラリは何ですか?

34

PDFレンダラーが必要です。市場にはいくつかの良いもの(ICEPdf、pdfrenderer)がありますが、外部のツールに頼らなければなりません。無料のPDFレンダラーも埋め込みフォントをレンダリングできないため、サムネイル(最終的に必要なもの)の作成にのみ適しています。

私のお気に入りの外部ツールはGhostscriptです。これは、単一のコマンドライン呼び出しでPDFを画像に変換できます。

これは、Postscript(およびPDF?)ファイルをbmp for usに変換します。これは、ニーズに合わせて変更するためのガイドとして(gsが機能するにはenv varsが必要です!):

pushd 
setlocal

Set BIN_DIR=C:\Program Files\IKOffice_ACME\bin
Set GS=C:\Program Files\IKOffice_ACME\gs
Set GS_DLL=%GS%\gs8.54\bin\gsdll32.dll
Set GS_LIB=%GS%\gs8.54\lib;%GS%\gs8.54\Resource;%GS%\fonts
Set Path=%Path%;%GS%\gs8.54\bin
Set Path=%Path%;%GS%\gs8.54\lib

call "%GS%\gs8.54\bin\gswin32c.exe" -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE#bmpmono -r600x600 -sOutputFile#%2 -f %1

endlocal
popd

PDATE: pdfboxはフォントを埋め込むことができるようになったため、Ghostscriptは不要になりました。

10
Daniel

Ghost4Jライブラリ(http://ghost4j.sourceforge.net)では、バージョン0.4.0以降、SimpleRendererを使用して数行のコードでジョブを実行できます。

  1. Load PDFまたはPSファイル(そのためにPSDocumentクラスを使用):

        PDFDocument document = new PDFDocument();
        document.load(new File("input.pdf"));
    
  2. レンダラーを作成する

        SimpleRenderer renderer = new SimpleRenderer();
    
        // set resolution (in DPI)
        renderer.setResolution(300);
    
  3. レンダリング

        List<Image> images = renderer.render(document);
    

次に、画像オブジェクトで必要な処理を実行できます。たとえば、次のようにPNGとして書き込むことができます。

            for (int i = 0; i < images.size(); i++) {
                ImageIO.write((RenderedImage) images.get(i), "png", new File((i + 1) + ".png"));
            }

注:Ghost4JはネイティブGhostscript C APIを使用するため、Ghostscriptをボックスにインストールする必要があります。

私はそれがあなたを助けることを願っています:)

31
zippy1978

Apache PDF Box PDFをjpg、bmp、wbmp、png、gifに変換できます。

ライブラリには、これを行うための PDFToImage と呼ばれるコマンドラインユーティリティも付属しています。

ソースコードをダウンロードしてPDFToImageクラスを見ると、PDF Boxを使用して独自のPDFを画像に変換する方法を見つけることができるはずですJava =コード。

25
Dónal Boyle
2
Maxym

jPDFImagesは無料ではありませんが、PDFページをJPEG、TIFFまたはPNG形式の画像に変換する商用ライブラリです。出力画像サイズはカスタマイズ可能です。

1
alaris

GPLに問題がない場合は、jPodRenderer(SourceForge)をさらに確認してください。

0
mtraut