チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

Koohji

Koohji

Spire.PDF 10.2.2のリリースをお知らせいたします。このバージョンでは、PDF から PDF/A、OFDおよび画像への変換機能が強化されています。さらに、テキスト検索や強調表示が機能しないなど、いくつかの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREPDF-6427
SPIREPDF-6489
テキストの検索と強調表示が機能しない問題を修正しました。
Bug SPIREPDF-6456 PDF文書をPDF/A文書に変換する際、アラブ文字体が失われる問題を修正しました。
Bug SPIREPDF-6493 PDF文書を印刷する時、印鑑の位置がずれてしまう問題を修正しました。
Bug SPIREPDF-6509 双面印刷する場合、正反面の向き設定が無視される問題を修正しました。
Bug SPIREPDF-6510 PDF文書を画像に変換する時、プログラムが「System.NullReferenceException」例外を投げる問題を修正しました。
Bug SPIREPDF-6524 PDF文書をOFD文書に変換してから元のPDF文書に戻すと、フォントが過度に太字になる問題を修正しました。
ここで Spire.PDF 10.2.2をダウンロードする

PDF ドキュメントは、いくつかの方法でセキュリティを付加することができます。PDF が許可パスワードで保護されている場合、読者はパスワードを入力せずにドキュメントを開くことができますが、印刷やコンテンツのコピーなど、ドキュメントをさらに操作する権限を持っていないかもしれません。この記事では、Java で Spire.PDF for Java ライブラリを使用して PDF ドキュメントのセキュリティ権限を設定する方法について学びます。

Spire.PDF for Java をインストールします

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>10.1.9</version>
    </dependency>
</dependencies>

PDF ドキュメントにセキュリティ権限を追加

以下は、Spire.PDF for Java を使用して PDF ドキュメントにセキュリティ権限を適用する手順です。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.loadFileFile() メソッドを使って PDF ファイルを読み込みます。
  • 開くパスワードと権限パスワードを指定します。生成されたドキュメントを開く際にパスワードを必要としないように、開くパスワードを空に設定することができます。
  • ドキュメントを開くパスワードと権限パスワードで暗号化し、PdfDocument.getSecurity().encrypt() メソッドを使用してセキュリティ権限を設定します。このメソッドは PdfPermissionsFlags 列挙型をパラメータとして受け取り、暗号化されたドキュメントのユーザーアクセス許可を定義します。
  • PdfPermissionsFlags 列挙型をパラメーターとして受け取ります。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.security.PdfEncryptionKeySize;
import com.spire.pdf.security.PdfPermissionsFlags;

import java.util.EnumSet;

public class ChangeSecurityPermissions {

    public static void main(String[] args) {

        //PdfDocumentオブジェクトを作成します
        PdfDocument doc = new PdfDocument();

        //サンプルのPDFファイルをロードします
        doc.loadFromFile("サンプル.pdf");

        //オープンパスワードを指定します
        String openPsd = "";

        //許可パスワードを指定します
        String permissionPsd = "password";

        //権限を指定します
        EnumSet permissionsFlags = EnumSet.of(PdfPermissionsFlags.Print, PdfPermissionsFlags.Full_Quality_Print);

        //ドキュメントをオープンパスワードと許可パスワードで暗号化し、権限と暗号化キーサイズを設定します
        doc.getSecurity().encrypt(openPsd, permissionPsd, permissionsFlags, PdfEncryptionKeySize.Key_128_Bit);

        //ドキュメントを別のPDFファイルに保存します
        doc.saveToFile("output/セキュリティ権限.pdf");
    }
}

Java:PDF 文書にセキュリティ権限を追加する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

表は PDF の請求書や財務報告書によく見られます。MS Excel が提供するツールを使ってデータを分析できるように、PDF の表データを Excel にエクスポートする必要がある場面に遭遇するかもしれません。この記事では、Spire.Office for Java を使って PDF ページから表を抽出し、それを Excel ワークシートに書き込む方法を説明します。

Spire.Office for Java をインストールします

実際には、PDF から表を抽出するために Spire.PDF for Java を使用し、Excel ファイルを生成するために Spire.XLS for Java を使用します。同じプロジェクトでこれらを使用するには、Java プログラムの依存関係として Spire.Office.jar ファイルを追加する必要があります。

JAR ファイルは、このリンクからダウンロードできます。Mavenを使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.office</artifactId>
        <version>9.1.10</version>
    </dependency>
</dependencies>

PDF から表データを Excel に書き出す

以下は、あるページからすべての表を抽出し、それぞれを独立したワークシートとして Excel ファイルに保存するための主な手順です。

  • PdfDocument のオブジェクトを初期化し、PdfDocument.loadFromFile() メソッドを用いて PDF ドキュメントを読み込みます。
  • PdfTableExtractor のオブジェクトを作成し、このクラスの下で extactTable(int pageIndex) メソッドを呼び出して、最初のページのすべての表を抽出します。
  • Workbook のインスタンスを作成します。
  • PdfTable[] 配列内の表をループし、インデックスで特定の表を取得します。
  • Workbook.getWorksheets.add() メソッドを使用して ワークブックにワークシートを追加します。
  • PDF 表内のセルをループし、PdfTable.getText(int rowIndex, int columnIndex) メソッドを用いて特定のセルの値を取得します。次に、Worksheet.get(int row, int column).setText(String string) メソッドを使って値をワークシートに挿入します。
  • Workbook.saveToFile() メソッドを使用して、ワークブックを Excel ファイルに保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.utilities.PdfTable;
import com.spire.pdf.utilities.PdfTableExtractor;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ExtractTableDataAndSaveInExcel {

    public static void main(String[] args) {

        //PDFドキュメントをロードします
        PdfDocument pdf = new PdfDocument("サンプル.pdf");

        //PdfTableExtractorインスタンスを作成します
        PdfTableExtractor extractor = new PdfTableExtractor(pdf);

        //最初のページからテーブルを抽出します
        PdfTable[] pdfTables = extractor.extractTable(0);

        //Workbookオブジェクトを作成します
        Workbook wb = new Workbook();

        //デフォルトのワークシートを削除します
        wb.getWorksheets().clear();

        //テーブルが見つかった場合
        if (pdfTables != null && pdfTables.length > 0) {

            //テーブルをループします
            for (int tableNum = 0; tableNum < pdfTables.length; tableNum++) {

                //ワークシートをワークブックに追加します
                String sheetName = String.format("テーブル - %d", tableNum + 1);
                Worksheet sheet = wb.getWorksheets().add(sheetName);

                //現在のテーブルの行をループします
                for (int rowNum = 0; rowNum < pdfTables[tableNum].getRowCount(); rowNum++) {

                    //現在のテーブルの列をループします
                    for (int colNum = 0; colNum < pdfTables[tableNum].getColumnCount(); colNum++) {

                        //現在のテーブルセルからデータを抽出します
                        String text = pdfTables[tableNum].getText(rowNum, colNum);

                        //特定のセルにデータを挿入します
                        sheet.get(rowNum + 1, colNum + 1).setText(text);

                    }
                }

                //列幅を自動調整します
                for (int sheetColNum = 0; sheetColNum < sheet.getColumns().length; sheetColNum++) {
                    sheet.autoFitColumn(sheetColNum + 1);
                }
            }
        }

        //ワークブックをExcelファイルに保存します
        wb.saveToFile("output/PDFの表をExcelに書き出す.xlsx", ExcelVersion.Version2016);
    }
}

Java:PDF の表データを抽出して Excel に書き込む方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Spire.Doc 12.1.17のリリースをお知らせいたします。 このバージョンでは、段落の左右のインデント機能に文字数を設定するオプションをサポートしています。WordからPDF、HTMLへの変換機能も強化された。さらに、Word を PDF に変換する際の不正なコンテンツ形式の問題など、いくつかの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREDOC-9979
SPIREDOC-10058
段落の左右のインデント機能に文字数を設定するオプションをサポートしています。
//文字数に応じて左インデントを設定する 
paragraph.Format.LeftIndentChars = 10; 
//文字数に応じて右インデントを設定する 
paragraph.Format.RightIndentChars = 10;
Bug SPIREDOC-3363 Word ドキュメントを PDF ドキュメントに変換するときにコンテンツ形式が正しくない問題を修正しました。
Bug SPIREDOC-3363
SPIREDOC-10083
Word 文書を PDF 文書に変換するときにフォントが変更される問題を修正しました。
Bug SPIREDOC-9136 Word文書をPDF文書に変換する際に、文書構造タグが失われる問題を修正しました。
Bug SPIREDOC-9718 保存された Docx ドキュメント内の数式コンテンツのフォントが傾いてしまう問題を修正しました。
Bug SPIREDOC-9756 Word文書をHTML文書に変換する際にプログラムがSystem.ArgumentExceptionをスローする問題を修正しました。
Bug SPIREDOC-10001 Word 文書を PDF 文書に変換するときに表の境界線が変更される問題を修正しました。
Bug SPIREDOC-10016 ブックマークの内容を置き換えた後に余分な空白の段落が表示される問題を修正しました。
Bug SPIREDOC-10084 Word 文書を PDF 文書に変換するときにフォントの太字スタイルが失われる問題を修正しました。
Bug SPIREDOC-10110 Doc ドキュメントのロード時にプログラムが System.ArgumentOutOfRangeException をスローする問題を修正しました。
Bug SPIREDOC-10111 Word ドキュメントを PDF ドキュメントに変換するときにコンテンツがインデントされる問題を修正しました。
Bug SPIREDOC-10119 クロス参照フィールドでコードを取得できない問題を修正しました。
Bug SPIREDOC-10132 空のドキュメントでFixedLayoutDocumentオブジェクトを取得するときにプログラムがSystem.ArgumentOutOfRangeExceptionをスローする問題を修正しました。
Bug SPIREDOC-10195 ドキュメントをコピーした後にブックマークのコンテンツを削除するときにプログラムが System.NullReferenceException をスローする問題を修正しました。
ここで Spire.Doc 12.1.17をダウンロードする

Spire.Office for C++ 9.1.0のリリースを発表できることを嬉しく思います。このバージョンでは、Spire.XLS for C++ に SpireException と呼ばれるカスタム例外クラスが追加されます。 また、システム言語環境をスペイン語に設定した場合に、ExcelからPDFに変換するとヘッダーの高さが広くなる問題を修正しました。詳細は以下の内容を読んでください。

ここで Spire.Office for C++ 9.1.0をダウンロードする:

このリリースで行われた変更のリストは次のとおりです

Spire.XLS for C++

カテゴリー ID 説明
New feature - SpireException というカスタム例外クラスを追加します。
Bug SPIREXLS-5040 システム言語環境がスペイン語に設定されている場合に、Excel を PDF に変換するとヘッダーの高さが増加する問題を修正しました。

Spire.Office for Java 9.1.10を発表できることをうれしく思います。このバージョンでは、Spire.PDF for Java に PDF を復号化するための 2 つの新しいメソッドが追加されています。 Spire.Doc for Java は、存在しないドキュメントをロードする際の例外キャッチを最適化します。 Spire.Barcode for Java は、QR コードの中央への画像の追加をサポートしています。さらに、多くの既知のバグも修正されました。詳細は以下の内容を読んでください。

ここで Spire.Office for Java 9.1.10をダウンロードする:

このリリースで行われた変更のリストは次のとおりです

Spire.PDF for Java

カテゴリー ID 説明
New feature SPIREPDF-6479 PDF を復号化するための 2 つの新しい方法を追加します。
PdfDocument pdf1 =new PdfDocument(); 
pdf1.loadFromFile("input.pdf"); 
pdf1.decrypt(); 
pdf1.saveToFile("output.pdf"); PdfDocument pdf2 =new PdfDocument(); 
pdf2.loadFromFile("input.pdf"); 
pdf2.decrypt(ownerPassword); 
pdf2.saveToFile("output.pdf");
Bug SPIREPDF-6429 OFD を PDF に変換するときに、プログラムが 「java.lang.NullPointerException」をスローする問題が修正されました。
Bug SPIREPDF-6482 PDF を画像に変換するときに、プログラムがハングする問題が修正されました。
Bug SPIREPDF-6485 OFD を に変換した後にコンテンツが失われる問題が修正されました。
Bug SPIREPDF-6486 PDF を XLSX に変換するときに、プログラムが 「java.lang.NullPointerException」 をスローする問題が修正されました。
Bug SPIREPDF-6502 テキストを置換すると内容が文字化けする問題が修正されました。

Spire.Doc for Java

カテゴリー ID 説明
New feature SPIREDOC-10090 Bookmark.getFirstColumn() メソッドおよび Bookmark.getLastColumn() メソッドを追加しました。
New feature SPIREDOC-10163 存在しないドキュメントパスの読み込み時の例外キャッチメカニズムを最適化しました。
Bug SPIREDOC-8257 Docx ドキュメントを PDF に変換する際のページ分割が正しくない問題を修正しました。
Bug SPIREDOC-8568
SPIREDOC-9172
Docx ドキュメントを PDF に変換する際の内容が正しくない問題を修正しました。
Bug SPIREDOC-8586 Docx ドキュメントを PDF に変換する際のヘッダーの下への移動が発生する問題を修正しました。
Bug SPIREDOC-8797 Docx ドキュメントを HTML に変換する際に、組み合わせ図形の描画エラーが発生する問題を修正しました。
Bug SPIREDOC-9069 Docx ドキュメントを PDF に変換する際に、チェックボックスの選択マークが失われ、余分なページが生成される問題を修正しました。
Bug SPIREDOC-9577 Docx ドキュメントを PDF に変換する際に、「java.lang.ArrayIndexOutOfBoundsException 」例外がスローされる問題を修正しました。
Bug SPIREDOC-9611 Docx ドキュメントを PDF に変換する際に、一部のコンテンツの欠落や正しくないフォーマットの問題を修正しました。
Bug SPIREDOC-9709 Doc ドキュメントの読み込み時に 「No have this value 63」 エラーが発生する問題を修正しました。
Bug SPIREDOC-9713 Docx ドキュメントを PDF に変換する際に、画像の位置がずれる問題を修正しました。
Bug SPIREDOC-9763 変更履歴の効果が正しく反映されない問題を修正しました。
Bug SPIREDOC-9783 Docx ドキュメントを PDF に変換する際に、画像とテキストが重なる問題を修正しました。
Bug SPIREDOC-9799 ブックマークの内容を置換後、フォントと段落スタイルが変更される問題を修正しました。
Bug SPIREDOC-10011 Docx ドキュメントを PDF に変換する際に、ヘッダーの内容が正しく表示されない問題を修正しました。
Bug SPIREDOC-10015 Docx ドキュメントを PDF に変換する際に、テーブルのスタイルが正しく反映されない問題を修正しました。
Bug SPIREDOC-10040 Docx ドキュメントを PDF に変換する際に、「Argument path cannot be empty」エラーが発生する問題を修正しました。
Bug SPIREDOC-10054 Docx ドキュメントを PDF に変換する際に、画像の表示が正しくない問題を修正しました。
Bug SPIREDOC-10074 Doc ドキュメントを PDF に変換する際に、一部の表が欠落し、表の高さが増加する問題を修正しました。
Bug SPIREDOC-10143 WPS で暗号化された Docx ドキュメントを読み込む際に 「java.lang.IllegalStateException: Wrong Word version」 エラーが発生する問題を修正しました。
Bug SPIREDOC-10148 Docx ドキュメントを PDF に変換する際の目次のリンク先が正しくない問題を修正しました。
Bug SPIREDOC-10157 BuiltinDocumentProperties.setKeyWord() メソッドを使用して文書に追加したキーワードが正常に設定されない問題を修正しました。
Bug SPIREDOC-10179 Docx ドキュメントを PDF に変換する際のページ番号の形式が変化する問題を修正しました。

Spire.Barcode for Java

カテゴリー ID 説明
New feature - ライセンスの適用方法が「com.spire.barcode.license.LicenseProvider.setLicenseKey(key)」に変更されました。
New feature SPIREBARCODE-244 QRコードの中央への画像の追加をサポートします。
BarcodeSettings barCodeSetting = new BarcodeSettings();
BufferedImage image = ImageIO.read(new File("Image/1.png"));
barCodeSetting.setQRCodeLogoImage(image);
Bug SPIREBARCODE-243 縦向きでバーコード認識が失敗する問題を修正しました。

Spire.Doc for Java 12.1.16のリリースを発表できることを嬉しく思います。このメソッドは Bookmark.getFirstColumn() メソッドと Bookmark.getLastColumn() メソッドを追加し、存在しないドキュメントパスの読み込み時の例外キャッチメカニズムを最適化しました。 Word から PDF および HTML への変換機能が強化されました。 さらに、リビジョン効果の誤った受け入れなど、いくつかの既知の問題がこのバージョンで修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREDOC-10090 Bookmark.getFirstColumn() メソッドおよび Bookmark.getLastColumn() メソッドを追加しました。
New feature SPIREDOC-10163 存在しないドキュメントパスの読み込み時の例外キャッチメカニズムを最適化しました。
Bug SPIREDOC-8257 Docx ドキュメントを PDF に変換する際のページ分割が正しくない問題を修正しました。
Bug SPIREDOC-8568
SPIREDOC-9172
Docx ドキュメントを PDF に変換する際の内容が正しくない問題を修正しました。
Bug SPIREDOC-8586 Docx ドキュメントを PDF に変換する際のヘッダーの下への移動が発生する問題を修正しました。
Bug SPIREDOC-8797 Docx ドキュメントを HTML に変換する際に、組み合わせ図形の描画エラーが発生する問題を修正しました。
Bug SPIREDOC-9069 Docx ドキュメントを PDF に変換する際に、チェックボックスの選択マークが失われ、余分なページが生成される問題を修正しました。
Bug SPIREDOC-9577 Docx ドキュメントを PDF に変換する際に、「java.lang.ArrayIndexOutOfBoundsException 」例外がスローされる問題を修正しました。
Bug SPIREDOC-9611 Docx ドキュメントを PDF に変換する際に、一部のコンテンツの欠落や正しくないフォーマットの問題を修正しました。
Bug SPIREDOC-9709 Doc ドキュメントの読み込み時に 「No have this value 63」 エラーが発生する問題を修正しました。
Bug SPIREDOC-9713 Docx ドキュメントを PDF に変換する際に、画像の位置がずれる問題を修正しました。
Bug SPIREDOC-9763 変更履歴の効果が正しく反映されない問題を修正しました。
Bug SPIREDOC-9783 Docx ドキュメントを PDF に変換する際に、画像とテキストが重なる問題を修正しました。
Bug SPIREDOC-9799 ブックマークの内容を置換後、フォントと段落スタイルが変更される問題を修正しました。
Bug SPIREDOC-10011 Docx ドキュメントを PDF に変換する際に、ヘッダーの内容が正しく表示されない問題を修正しました。
Bug SPIREDOC-10015 Docx ドキュメントを PDF に変換する際に、テーブルのスタイルが正しく反映されない問題を修正しました。
Bug SPIREDOC-10040 Docx ドキュメントを PDF に変換する際に、「Argument path cannot be empty」エラーが発生する問題を修正しました。
Bug SPIREDOC-10054 Docx ドキュメントを PDF に変換する際に、画像の表示が正しくない問題を修正しました。
Bug SPIREDOC-10074 Doc ドキュメントを PDF に変換する際に、一部の表が欠落し、表の高さが増加する問題を修正しました。
Bug SPIREDOC-10143 WPS で暗号化された Docx ドキュメントを読み込む際に 「java.lang.IllegalStateException: Wrong Word version」 エラーが発生する問題を修正しました。
Bug SPIREDOC-10148 Docx ドキュメントを PDF に変換する際の目次のリンク先が正しくない問題を修正しました。
Bug SPIREDOC-10157 BuiltinDocumentProperties.setKeyWord() メソッドを使用して文書に追加したキーワードが正常に設定されない問題を修正しました。
Bug SPIREDOC-10179 Docx ドキュメントを PDF に変換する際のページ番号の形式が変化する問題を修正しました。
ここで Spire.Doc for Java 12.1.16をダウンロードする

Spire.Presentation 9.1.5のリリースをお知らせいたします。このバージョンでは、PPTX へのフォントの埋め込みがサポートされています。 また、Ole オブジェクトが非表示かどうかを判断するための IsHidden プロパティも提供されています。 さらに、システムの地域言語がトルコ語に設定されているときに PPTX ドキュメントをロードすると、プログラムが「Microsoft PowerPoint 2007 file is corrpt.」をスローするなど、既知の問題も修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature - PPTX でのフォントの埋め込みをサポート: PPTX へのフォントの埋め込みのみをサポートし、PDF および PowerPoint 2003 形式への埋め込みはサポートしません。中国語名のフォントを埋め込む場合、フォント名は中国語で表示されません。
ppt.AddEmbeddedFont(string fontpath);
New feature SPIREPPT-2424 Ole オブジェクトが非表示かどうかを判断する IsHidden プロパティを提供されています。
OleObjectCollection oles = ppt.Slides[0].OleObjects;
OleObject ole= oles[0];
bool result=ole.IsHidden;
Bug SPIREPPT-2418 システムの地域言語がトルコ語に設定されているときに PPTX ドキュメントをロードすると、プログラムが「Microsoft PowerPoint 2007 file is corrpt.」をスローする問題が修正されました。
Bug SPIREPPT-2396 グラフのラベルの位置を変更した後の効果が正しくなくなる問題が修正されました。
ここで Spire. Presentation 9.1.5をダウンロードする

Spire.PDF 10.1.17のリリースをお知らせいたします。このバージョンでは、PDF から画像、OFDへの変換機能および OFD、 HTML から PDF への変換機能が強化されています。さらに、テキストを置換した後のコンテンツの重複の問題など、既知の問題も修正されています。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREPDF-6278 PdfHTMLTextElement インターフェースを使用して HTML テキストを描画する際の効果が正しくない問題を修正しました。
Bug SPIREPDF-6400 ブックマークを追加した後、ドキュメントを保存する際に「 System.OutOfMemoryException」例外が発生する問題を修正しました。
Bug SPIREPDF-6426 テキストを置換した後に重複コンテンツが表示される問題を修正しました。
Bug SPIREPDF-6430 OFDを PDFに変換する際に 「System.IndexOutOfRangeException」例外が発生する問題を修正しました。
Bug SPIREPDF-6445 テーブルを抽出する際に 「System.Collections.Generic.KeyNotFoundException」例外が発生する問題を修正しました。
Bug SPIREPDF-6471 ページを回転させた後、画像として保存する際に 「System.ArgumentException」例外が発生する問題を修正しました。
Bug SPIREPDF-6473 HTML を PDF に変換する際にカラフルな絵文字が白黒になる問題を修正しました。
Bug SPIREPDF-6477 PDF を画像に変換する際の内容が正しくない問題を修正しました。
Bug SPIREPDF-6480 PDFを印刷する際に「System.NullReferenceException」例外が発生する問題を修正しました。
Bug SPIREPDF-6483 PDF を OFD に変換した後、一部のテキストが太字スタイルでなくなる問題を修正しました。
ここで Spire.PDF 10.1.17をダウンロードする

画像を PDF に変換することは、多くの理由で有益です。まず一つの理由として、画像をより読みやすく、簡単に共有できる形式に変換することができます。さらに、画像の品質を保ちながらファイルのサイズを劇的に削減することができます。この記事では、Spire.PDF for Java を使用して Java で画像を PDF に変換する方法を説明します。

Spire.PDF では画像を PDF に直接変換するための簡単な方法は提供されていません。ただし、新しい PDF ドキュメントを作成し、指定した位置に画像を描画することは可能です。生成された PDF のページサイズが画像と一致するかどうかによって、このトピックは2つのサブトピックに分けることができます。

Spire.PDF for Java をインストールします

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>9.12.0</version>
    </dependency>
</dependencies>

さらに、最初のコード例では画像のリサイズに imgscalr ライブラリが使用されています。画像のサイズを調整する必要がない場合は、それをインストールする必要はありません。

指定した位置に画像を PDF に追加する

Spire.PDF for Java を使用して、指定された場所に画像を PDF に追加する手順は以下の通りです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPageSettings().setMargins() メソッドを使用してページの余白を設定します。
  • PdfDocument.getPages().add() メソッドを使用してページを追加します。
  • ImageIO.read() メソッドを使用して画像を読み込み、画像の幅と高さを取得します。
  • もし画像の幅がページ(コンテンツ領域)の幅よりも大きい場合、imgscalr ライブラリを使用して画像をページ幅に合わせるようにリサイズします。
  • スケーリングされた画像または元の画像を基に PdfImage オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawImage() メソッドを使用して、PdfImage オブジェクトを最初のページの (0, 0) に描画します。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを PDF ファイルとして保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;
import org.imgscalr.Scalr;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;

public class AddImageToPdf {

    public static void main(String[] args) throws IOException {

        // PdfDocumentオブジェクトを作成する
        PdfDocument doc = new PdfDocument();

        // マージンを設定する
        doc.getPageSettings().setMargins(20);

        // ページを追加する
        PdfPageBase page = doc.getPages().add();

        // 画像を読み込む
        BufferedImage image = ImageIO.read(new FileInputStream("サンプル.jpg"));

        // 画像の幅と高さを取得する
        int width = image.getWidth();
        int height = image.getHeight();

        // PdfImage変数を宣言する
        PdfImage pdfImage;

        // 画像の幅がページの幅より大きい場合
        if (width > page.getCanvas().getClientSize().getWidth()) {
            // 画像をページの幅に合わせてリサイズする
            int widthFitRate = width / (int) page.getCanvas().getClientSize().getWidth();
            int targetWidth = width / widthFitRate;
            int targetHeight = height / widthFitRate;
            BufferedImage scaledImage = Scalr.resize(image, Scalr.Method.QUALITY, targetWidth, targetHeight);

            // スケーリングされた画像をPdfImageオブジェクトに読み込む
            pdfImage = PdfImage.fromImage(scaledImage);

        } else {
            // オリジナルの画像をPdfImageオブジェクトに読み込む
            pdfImage = PdfImage.fromImage(image);
        }

        // 画像を(0, 0)の位置に描画する
        page.getCanvas().drawImage(pdfImage, 0, 0, pdfImage.getWidth(), pdfImage.getHeight());

        // ファイルに保存する
        doc.saveToFile("output/画像の追加.pdf");
        doc.close();
    }
}

Java:画像を PDF に変換する方法

同じ幅と高さで画像を PDF に変換する

Spire.PDF for Java を使用して、画像と同じページサイズの PDF に画像を変換する手順は以下の通りです。

  • PdfDocument オブジェクトを作成します。
  • PdfDocument.getPageSettings().setMargins() メソッドを使用してページの余白をゼロに設定します。
  • ImageIO.read() メソッドを使用して画像を読み込み、画像の幅と高さを取得します。
  • PdfDocument.getPages().add() メソッドを使用して、画像のサイズに基づいてページを PDF に追加します。
  • 画像を基に PdfImage オブジェクトを作成します。
  • PdfPageBase.getCanvas().drawImage() メソッドを使用して、PdfImage オブジェクトを最初のページの座標 (0, 0) から描画します。
  • PdfDocument.saveToFile() メソッドを使用してドキュメントを PDF ファイルとして保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImage;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.FileInputStream;
import java.io.IOException;

public class ConvertImageToPdfWithSameSize {

    public static void main(String[] args) throws IOException {

        // PdfDocumentオブジェクトを作成する
        PdfDocument doc = new PdfDocument();

        // マージンを0に設定する
        doc.getPageSettings().setMargins(0);

        // 画像を読み込む
        BufferedImage image = ImageIO.read(new FileInputStream("サンプル.jpg"));

        // 画像の幅と高さを取得する
        int width = image.getWidth();
        int height = image.getHeight();

        // 画像と同じサイズのページを追加する
        PdfPageBase page = doc.getPages().add(new Dimension(width, height));

        // 画像を基にPdfImageオブジェクトを作成する
        PdfImage pdfImage = PdfImage.fromImage(image);

        // 画像をページの(0, 0)の位置に描画する
        page.getCanvas().drawImage(pdfImage, 0, 0, pdfImage.getWidth(), pdfImage.getHeight());

        // ファイルに保存する
        doc.saveToFile("output/同じサイズで画像をPDFページに変換.pdf");
    }
}

Java:画像を PDF に変換する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。