チュートリアル

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

Koohji

Koohji

PDF 文書内のブックマークは、文書内の特定の場所にリンクされた書式付きテキストで構成されています。文書読者は、頻繁に上下にスクロールして内容を探す必要がなく、ページの横に表示されるしおりをクリックするだけで、文書内の適切な場所に移動することができます。ブックマークは、非常に大きな文書を閲覧する際に特に役立ちます。 よく整理されたブックマークは、目次としても活用できます。 また、大きな文書を作成する場合、重要な内容にはブックマークでリンクを張り、読みながら簡単に探せるようにします。 この記事では、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>9.1.4</version>
    </dependency>
</dependencies>

PDF 文書にブックマークを追加する

PDF for Java は、PDF 文書にブックマークを追加するために、PdfDocument.getBookmarks().add() メソッドを提供しています。 メインブックマークを追加するだけでなく、PdfBookmark.add() メソッドを使ってメインブックマークにサブブックマークを追加できます。PdfBookmark クラスの下には、ブックマークのリンク対象、文字色や 文字スタイルなどを設定するメソッドが多数用意されています。 PDF 文書にブックマークを追加する詳細な手順は次のとおりです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、PDFドキュメントを読み込みます。
  • PDF 文書内のページをループして、ブックマークを追加し、そのスタイルを設定します。
  • PdfDocument.getBookmarks().add() メソッドを使用して、ドキュメントにメインブックマークを追加します。
  • PdfDestination クラスのオブジェクトを作成し、PdfBookmark.setAction() メソッドを使用して、メインブックマークのリンク対象を設定します。
  • PdfBookmark.setColor() メソッドを使用して、メインブックマークの文字色を設定します。
  • PdfBookmark.setDisplayStyle() メソッドを使用して、メインブックマークの文字書式を設定します。
  • PdfBookmark.add() メソッドを使用して、メインブックマークにサブブックマークを追加します。
  • 上記の方法で、サブブックマークのリンク対象、文字色、文字書式を設定します。
  • PdfDocument.saveToFile() メソッドを使用して文書を保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.actions.PdfGoToAction;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.general.PdfDestination;
import com.spire.pdf.graphics.PdfRGBColor;

import java.awt.*;
import java.awt.geom.Point2D;

public class addBookmark {
    public static void main(String[] args) {

        //PdfDocumentクラスのインスタンスを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("地球には代替品がない.pdf");

        //PDF文書内のページをループする
        for(int i = 0; i< pdf.getPages().getCount();i++) {
            PdfPageBase page = pdf.getPages().get(i);
            //ブックマークを追加する
            PdfBookmark bookmark = pdf.getBookmarks().add(String.format("ブックマーク-%s", i + 1));
            //ブックマークのリンク先のページと場所を設定する
            PdfDestination destination = new PdfDestination(page, new Point2D.Float(0, 0));
            bookmark.setAction(new PdfGoToAction(destination));
            //文字色を設定する
            bookmark.setColor(new PdfRGBColor(new Color(139, 69, 19)));
            //文字書式を設定する
            bookmark.setDisplayStyle(PdfTextStyle.Bold);
            //サブブックマークを追加する
            PdfBookmark childBookmark = bookmark.add(String.format("サブブックマーク-%s", i + 1));
            //リンク先のページと場所を設定する
            PdfDestination childDestination = new PdfDestination(page, new Point2D.Float(0, 100));
            childBookmark.setAction(new PdfGoToAction(childDestination));
            //文字色を設定する
            childBookmark.setColor(new PdfRGBColor(new Color(255, 127, 80)));
            //文字書式を設定する
            childBookmark.setDisplayStyle(PdfTextStyle.Italic);
        }

        //文書を保存する
        pdf.saveToFile("ブックマークの追加.pdf");
    }
}

Java:PDF のブックマークを追加、編集、削除する方法

PDF 文書内のブックマークを編集する

Spire.PDF for Java の PdfBookmark クラスのメソッドを使用して、PDF 文書のしおりを編集することもできます。 詳しい操作手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、PDF ドキュメントを読み込みます。
  • PdfDocument.getBookmarks().get() メソッドを使用して、1つ目のブックマークを取得します。
  • PdfBookmark.setTitle() メソッドを使用して、ブックマークのタイトルを変更します。
  • PdfBookmark.setColor() メソッドを使用して、ブックマークの文字色を変更します。
  • PdfBookmark.setDisplayStyle() メソッドを使用して、ブックマークの文字書式を変更します。
  • 上記の方法を使って、サブブックマークの文字色や書式を変更します。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;
import com.spire.pdf.bookmarks.PdfTextStyle;
import com.spire.pdf.graphics.PdfRGBColor;

import java.awt.*;

public class editBookmarks {
    public static void main(String[] args) {

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

        //PDFファイルを読み込む
        doc.loadFromFile("ブックマークの追加.pdf");

        //1つ目のブックマークを取得する
        PdfBookmark bookmark = doc.getBookmarks().get(0);
        //ブックマークのタイトルを変更する
        bookmark.setTitle("新しいタイトル");
        //ブックマークの文字色を変更する
        bookmark.setColor(new PdfRGBColor(new Color(255,0,0)));
        //ブックマークの文字書式を変更する
        bookmark.setDisplayStyle(PdfTextStyle.Italic);

        //1つ目のブックマークのサブブックマークを編集する
        for (PdfBookmark childBookmark : (Iterable) bookmark) {
            childBookmark.setColor(new PdfRGBColor(new Color(0,0,255)));
            childBookmark.setDisplayStyle(PdfTextStyle.Bold);
        }

        //ドキュメントを保存する
        doc.saveToFile("ブックマークの編集.pdf");
        doc.close();
    }
}

Java:PDF のブックマークを追加、編集、削除する方法

PDF 文書からブックマークを削除する

Spire.PDF for Java を使用して、PDF ドキュメント内の単一、複数、またはすべてのブックマークを削除することもできます。 ここで、PdfDocument.getBookmarks().removeAt() メソッドは指定されたマスターブックマークを削除するために使用され、PdfDocument.getBookmarks().clear() メソッドはすべてのブックマークを削除するために使用され、PdfBookmark.removeAt() メソッドは1つのマスターブックマークの指定されたサブブックマークを削除するために使用されます。PDF ブックマークを削除する詳細な手順は次のとおりです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して、PDF ドキュメントを読み込みます。
  • PdfDocument.getBookmarks().get() メソッドを使用して、1つ目のブックマークを取得します。
  • PdfBookmark.removeAt() メソッドを使用して、1つ目のブックマークのサブブックマークを削除します。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.bookmarks.PdfBookmark;

public class deleteBookmarks {
    public static void main(String[] args) {

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("ブックマークの追加.pdf");

        //1つ目のブックマークを取得する
        PdfBookmark pdfBookmark = pdf.getBookmarks().get(0);

        //1番目のブックマークのサブブックマークを削除する
        pdfBookmark.removeAt(0);

        //1つ目のブックマークとそのサブブックマークを削除する
        //pdf.getBookmarks().removeAt(0);

        //すべてのブックマークを削除する
        //pdf.getBookmarks().clear();

        //ドキュメントを保存する
        pdf.saveToFile("ブックマークの削除.pdf");
    }
}

Java:PDF のブックマークを追加、編集、削除する方法

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

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

木, 02 2月 2023 01:51

Java:PDF を印刷する方法

java.awt.print パッケージは、一般的な印刷に必要なクラスとメソッドを提供し、プリンタ名の指定、印刷範囲の設定、両面印刷の設定、カスタム用紙サイズの設定など、ドキュメントの種類の指定と印刷オプションの管理を行うことができます。この記事では、Spire.PDF for Java クラスライブラリと java.awt.print パッケージを使用して、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>9.1.4</version>
    </dependency>
</dependencies>

PDF ファイルをデフォルトのプリンターで印刷する

印刷時にプリンター名が指定されていない場合、プログラムはデフォルトのプリンターを使用してドキュメントを印刷します。以下は、java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントをデフォルトのプリンターで印刷する手順です。

  • PrinterJob クラスのオブジェクトを作成します。
  • PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用してPDFドキュメントを読み込みます。
  • 設定された書式でドキュメントのページをレンダリングするために、PrinterJob.setPrintable() メソッドを使用します。
  • PrinterJob.print() メソッドを使用して、PDFのページを印刷します。
  • Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class printWithDefaultPrinter {

    public static void main(String[] args) {

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //PageFormatクラスのオブジェクトを作成し、ページをデフォルトのサイズと向きに設定する
        PageFormat pageFormat = printerJob.defaultPage();

        //Paperクラスのオブジェクトを作成し、用紙の設定を取得する
        Paper paper = pageFormat.getPaper();

        //用紙の描画可能範囲を設定する
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

        //用紙設定を適用する
        pageFormat.setPaper(paper);

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("企画書.pdf");

        //設定された書式でページを描画する
        printerJob.setPrintable(pdf, pageFormat);

        //印刷を実行する
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

指定したページ範囲を指定したプリンターで印刷する

指定されたプリンタ上で PDF ドキュメントを印刷する必要がある場合、まず使用したいプリンタを見つけ、それから PrinterJob.setPrintService() メソッドを使用してそのプリンタ上での印刷を指定することができます。 Java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントの指定した範囲のページを、指定したプリンターで印刷する手順を説明します。

  • PrinterJob クラスのオブジェクトを作成します。
  • カスタム findPrintService() メソッドを使用して、使用するプリンタを見つけ、次に PrinterJob.setPrintService() メソッドを使用して、印刷に使用されるそのプリンタを指定します。
  • PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • 設定された書式でドキュメントのページをレンダリングするために、PrinterJob.setPrintable() メソッドを使用します。
  • PrintRequestAttributeSet クラスのオブジェクトを作成し、印刷するページ範囲を設定します。
  • PrinterJob.print() メソッドを使用して、PDF のページを印刷します。
  • Java
import com.spire.pdf.PdfDocument;
import javax.print.PrintService;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.PageRanges;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class printWithSpecifiedPrinter {

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

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //プリンターを指定する
        PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
        printerJob.setPrintService(myPrintService);

        //PageFormatクラスのオブジェクトを作成し、ページをデフォルトのサイズと向きに設定する
        PageFormat pageFormat = printerJob.defaultPage();

        //Paperクラスのオブジェクトを作成し、用紙の設定を取得する
        Paper paper = pageFormat.getPaper();

        //用紙の描画可能範囲を設定する
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

        //用紙設定を適用する
        pageFormat.setPaper(paper);

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("企画書.pdf");

        //指定された書式でページをレンダリングする
        printerJob.setPrintable(pdf, pageFormat);

        //PrintRequestAttributeSetクラスのオブジェクトを作成する
        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();

        //印刷範囲を設定する
        attributeSet.add(new PageRanges(1,7));

        //印刷を実行する
        try {
            printerJob.print(attributeSet);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }

    //プリントサービスを探す
    private static PrintService findPrintService(String printerName) {

        PrintService[] printServices = PrinterJob.lookupPrintServices();
        for (PrintService printService : printServices) {
            if (printService.getName().equals(printerName)) {

                System.out.print(printService.getName());
                return printService;
            }
        }
        return null;
    }
}

PDF ファイルを印刷ダイアログで印刷する

PDF ドキュメントを印刷する場合、印刷ダイアログで印刷を設定することもできます。 ここでは、java.awt.print と Spire.PDF for Java を使用して、印刷ダイアログから PDF ドキュメントを印刷する手順を説明します。

  • PrinterJob クラスのオブジェクトを作成します。
  • PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • 設定された書式でドキュメントのページをレンダリングするために、PrinterJob.setPrintable() メソッドを使用します。
  • プリントダイアログを表示するには、PrinterJob.printDialog() メソッドを使用します。
  • PrinterJob.print() メソッドを使用して、PDF のページを印刷します。
  • Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class printWithPrintDialog {

    public static void main(String[] args) {

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //PageFormatクラスのオブジェクトを作成し、ページをデフォルトのサイズと向きに設定する
        PageFormat pageFormat = printerJob.defaultPage();

        //Paperクラスのオブジェクトを作成し、用紙の設定を取得する
        Paper paper = pageFormat.getPaper();

        //用紙の描画可能領域を設定する
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

        //用紙設定を適用する
        pageFormat.setPaper(paper);

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("企画書.pdf");

        //設定された書式でページをレンダリングする
        printerJob.setPrintable(pdf, pageFormat);

        //印刷ダイアログを表示する
        if (printerJob.printDialog()) {
            try {
                printerJob.print();
            } catch (PrinterException e) {
                e.printStackTrace();
            }
        }
    }
}

PDF ファイルを両面印刷モードで印刷する

java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントを両面印刷する手順を説明します。

  • PrinterJob クラスのオブジェクトを作成します。
  • PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • 設定された書式でドキュメントのページをレンダリングするために、PrinterJob.setPrintable() メソッドを使用します。
  • PrintRequestAttributeSet クラスのオブジェクトを作成し、印刷モードを両面印刷に設定します。
  • PrinterJob.print() メソッドを使用して、PDF のページを印刷します。
  • Java
import com.spire.pdf.PdfDocument;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Sides;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class printInDuplexMode {

    public static void main(String[] args) {

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //PageFormatクラスのオブジェクトを作成し、ページをデフォルトのサイズと向きに設定する
        PageFormat pageFormat = printerJob.defaultPage();

        //Paperクラスのオブジェクトを作成し、用紙の設定を取得する
        Paper paper = pageFormat.getPaper();

        //用紙の描画可能領域を設定する
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

        //用紙設定を適用する
        pageFormat.setPaper(paper);

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("企画書.pdf");

        //設定された書式でドキュメントのページをレンダリングする
        printerJob.setPrintable(pdf, pageFormat);

        //PrintRequestAttributedクラスのオブジェクトを作成する
        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();

        //印刷モードを両面印刷に設定する
        attributeSet.add(Sides.TWO_SIDED_SHORT_EDGE);

        //印刷を実行する
        try {
            printerJob.print(attributeSet);
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

PDF ファイルをカスタム用紙サイズで印刷する

Paper クラスのメソッドでは、印刷時の用紙サイズを設定することができます。 用紙サイズは、Paper.setSize() メソッドでカスタマイズすることができます。java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントをカスタム用紙サイズに印刷する手順を説明します。

  • PrinterJob クラスのオブジェクトを作成します。
  • Paper クラスの Paper.setSize() メソッドで用紙の高さと幅を設定します。
  • PdfDocument クラスのオブジェクトを作成し、PdfDocument.LoadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • 設定された書式でドキュメントのページをレンダリングするために、PrinterJob.setPrintable() メソッドを使用します。
  • PrinterJob.print() メソッドを使用して、PDF のページを印刷します。
  • Java
import com.spire.pdf.PdfDocument;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class printInCustomPaperSize {

    public static void main(String[] args) {

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //PageFormatクラスのオブジェクトを作成し、ページをデフォルトのサイズと向きに設定する
        PageFormat pageFormat = printerJob.defaultPage();

        //Paperクラスのオブジェクトを作成し、用紙の設定を取得する
        Paper paper = pageFormat.getPaper();

        //用紙の高さと幅を設定する
        paper.setSize(500,600);

        //用紙設定を適用する
        pageFormat.setPaper(paper);

        //PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        //PDFファイルを読み込む
        pdf.loadFromFile("企画書.pdf");

        //設定された書式でページをレンダリングする
        printerJob.setPrintable(pdf, pageFormat);

        //印刷を実行する
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

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

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

入力可能な PDF フォームは、ユーザーからデータを収集するのに便利です。PDF はビジネスの中で最も人気のあるファイル形式の1つになっているので、インタラクティブな、記入可能な PDF フォームを作成することができることは重要です。この記事は、Spire.PDF for Java を使って、PDF に記入可能なフォームフィールドを作成、記入、削除する方法を示します。

Spire.PDF for Java は com.spire.pdf.fields 名前空間の下で一連の有用なクラスを提供します。これらのクラスは、開発者がテキスト ボックス、チェック ボックス、コンボ ボックス、リスト ボックス、ラジオ ボタンなどの様々な種類のフォームフィールドを作成したり編集したりすることを可能にします。下の表は、フォームフィールドに関連するいくつかの主要なクラスの一覧です。

クラス 説明
PdfForm PDF文書の対話型のフォームを表します。
PdfField PDF文書の対話型フォームのフィールドを表します。
PdfTextBoxField PDFフォームのテキスト ボックス フィールドを表します。
PdfCheckBoxField PDFフォームのチェック ボックス フィールドを表します。
PdfComboBoxField PDFフォームのコンボ ボックス フィールドを表します。
PdfListBoxField PDFフォームのリスト ボックス フィールドを表します。
PdfListFieldItem リスト フィールドの項目を表します。
PdfRadioButtonListField PDFフォームのラジオ ボタン フィールドを表します。
PdfRadioButtonListItem ラジオ ボタン リストの項目を表します。
PdfButtonField PDFフォームのボタン フィールドを表します。
PdfSignatureField 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>8.12.6</version>
    </dependency>
</dependencies>

PDF 文書に入力可能なフォームフィールドを作成する

PDF フォームを作成するには、対応するフィールドクラスのインスタンスを初期化します。setBounds() メソッドを使用してドキュメント内の特定のフィールドのサイズと位置を指定し、次に PdfFormFieldCollection.add() メソッドを使用して PDF にそれを追加します。以下は、Spire.PDF for Java を使用して PDF 文書内に様々な種類のフォームフィールドを作成する手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocuemnt.getPages().add() メソッドを使用して、ページを追加します。
  • PdfTextBoxField クラスのオブジェクトを作成し、Bounds、Font、Text などのフィールドのプロパティを設定し、PdFormfFieldCollection.add() メソッドを使用してそれをドキュメントに追加します。
  • 手順3を繰り返して、チェック ボックス、コンボ ボックス、リスト ボックス、ラジオ ボタン、署名フィールド、ボタンをドキュメントに追加します。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.actions.PdfSubmitAction;
import com.spire.pdf.fields.*;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class createFillableFormFields {

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

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

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

        //x、y座標を初期化する
        float baseX = 100;
        float baseY = 30;

        //2つのブラシのオブジェクトを作成する
        PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(Color.blue));
        PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(Color.black));

        //フォントを作成する
        PdfCjkStandardFont font = new PdfCjkStandardFont(PdfCjkFontFamily.Heisei_Mincho_W_3, 14f);

        //テキスト ボックスを追加する
        page.getCanvas().drawString("テキスト ボックス:", font, brush1, new Point2D.Float(10, baseY));
        Rectangle2D.Float tbxBounds = new Rectangle2D.Float(baseX+40, baseY, 150, 15);
        PdfTextBoxField textBox = new PdfTextBoxField(page, "テキスト ボックス");
        textBox.setBounds(tbxBounds);
        textBox.setText("Hello World");
        textBox.setFont(font);
        doc.getForm().getFields().add(textBox);
        baseY += 30;

        //チェック ボックスを2つ追加する
        page.getCanvas().drawString("チェック ボックス:", font, brush1, new Point2D.Float(10, baseY));
        Rectangle2D.Float checkboxBound1 = new Rectangle2D.Float(baseX+130, baseY, 15, 15);
        PdfCheckBoxField checkBoxField1 = new PdfCheckBoxField(page, "チェック ボックス 1");
        checkBoxField1.setBounds(checkboxBound1);
        checkBoxField1.setChecked(false);
        page.getCanvas().drawString("オプション 1", font, brush2, new Point2D.Float(baseX + 40, baseY));

        Rectangle2D.Float checkboxBound2 = new Rectangle2D.Float(baseX + 250, baseY, 15, 15);
        PdfCheckBoxField checkBoxField2 = new PdfCheckBoxField(page, "チェック ボックス 2");
        checkBoxField2.setBounds(checkboxBound2);
        checkBoxField2.setChecked(false);
        page.getCanvas().drawString("オプション 2", font, brush2, new Point2D.Float(baseX + 160, baseY));
        doc.getForm().getFields().add(checkBoxField1);
        doc.getForm().getFields().add(checkBoxField2);
        baseY += 30;

        //リスト ボックスを追加する
        page.getCanvas().drawString("リスト ボックス:", font, brush1, new Point2D.Float(10, baseY));
        Rectangle2D.Float listboxBound = new Rectangle2D.Float(baseX+30, baseY, 150, 50);
        PdfListBoxField listBoxField = new PdfListBoxField(page, "リスト ボックス");
        listBoxField.getItems().add(new PdfListFieldItem("項目 1", "項目1"));
        listBoxField.getItems().add(new PdfListFieldItem("項目 2", "項目2"));
        listBoxField.getItems().add(new PdfListFieldItem("項目 3", "項目3")); ;
        listBoxField.setBounds(listboxBound);
        listBoxField.setFont(font);
        listBoxField.setSelectedIndex(0);
        doc.getForm().getFields().add(listBoxField);
        baseY += 65;

        //ラジオ ボタンを2つ追加する
        page.getCanvas().drawString("ラジオ ボタン:", font, brush1, new Point2D.Float(10, baseY));
        PdfRadioButtonListField radioButtonListField = new PdfRadioButtonListField(page, "ラジオ");
        PdfRadioButtonListItem radioItem1 = new PdfRadioButtonListItem("オプション1");
        Rectangle2D.Float radioBound1 = new Rectangle2D.Float(baseX+20, baseY, 15, 15);
        radioItem1.setBounds(radioBound1);
        page.getCanvas().drawString("オプション 1", font, brush2, new Point2D.Float(baseX + 40, baseY));

        PdfRadioButtonListItem radioItem2 = new PdfRadioButtonListItem("オプション2");
        Rectangle2D.Float radioBound2 = new Rectangle2D.Float(baseX + 150, baseY, 15, 15);
        radioItem2.setBounds(radioBound2);
        page.getCanvas().drawString("オプション 2", font, brush2, new Point2D.Float(baseX + 170, baseY));
        radioButtonListField.getItems().add(radioItem1);
        radioButtonListField.getItems().add(radioItem2);
        radioButtonListField.setSelectedIndex(0);
        doc.getForm().getFields().add(radioButtonListField);
        baseY += 30;

        //コンボ ボックスを追加する
        page.getCanvas().drawString("コンボ ボックス:", font, brush1, new Point2D.Float(10, baseY));
        Rectangle2D.Float cmbBounds = new Rectangle2D.Float(baseX+30, baseY, 150, 15);
        PdfComboBoxField comboBoxField = new PdfComboBoxField(page, "コンボ ボックス");
        comboBoxField.setBounds(cmbBounds);
        comboBoxField.getItems().add(new PdfListFieldItem("項目 1", "項目1"));
        comboBoxField.getItems().add(new PdfListFieldItem("項目 2", "項目2"));
        comboBoxField.getItems().add(new PdfListFieldItem("項目 3", "項目3"));
        comboBoxField.getItems().add(new PdfListFieldItem("項目 4", "項目4"));
        comboBoxField.setSelectedIndex(0);
        comboBoxField.setFont(font);
        doc.getForm().getFields().add(comboBoxField);
        baseY += 30;

        //署名フィールドを追加する
        page.getCanvas().drawString("署名フィールド:", font, brush1, new Point2D.Float(10, baseY));
        PdfSignatureField sgnField = new PdfSignatureField(page, "署名フィールド");
        Rectangle2D.Float sgnBounds = new Rectangle2D.Float(baseX+30, baseY, 150, 80);
        sgnField.setBounds(sgnBounds);
        doc.getForm().getFields().add(sgnField);
        baseY += 95;

        //ボタンを追加する
        page.getCanvas().drawString("ボタン:", font, brush1, new Point2D.Float(10, baseY));
        Rectangle2D.Float btnBounds = new Rectangle2D.Float(baseX-25, baseY, 50, 15);
        PdfButtonField buttonField = new PdfButtonField(page, "ボタン");
        buttonField.setBounds(btnBounds);
        buttonField.setText("コミット");
        buttonField.setFont(font);
        PdfSubmitAction submitAction = new PdfSubmitAction("https://www.e-iceblue.com/getformvalues.php");
        buttonField.getActions().setMouseDown(submitAction);
        doc.getForm().getFields().add(buttonField);

        //ドキュメントを保存する
        doc.saveToFile("入力可能なフォーム.pdf", FileFormat.PDF);
    }
}

Java:PDF 文書に入力可能なフォームフィールドを作成、入力、削除する方法

既存の PDF 文書内のフォームフィールドに入力する

フォームに入力するためには、まず PDF 文書から全てのフォームフィールドを取得し、あるフィールドのタイプを決定し、それから値を入力するか、またはあらかじめ定義されたリストから値を選択する必要があります。以下は、Spire.PDF for Java を使用して、既存の PDF 文書にフォームフィールドを入力する手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.getForm() メソッドを使用して、ドキュメントからフォームを取得します。
  • PdfFormWidget.getFieldsWidget() メソッドを使用して、フォームフィールドウィジェットのコレクションを取得します。
  • フィールドウィジェットのコレクションをループして、特定の PdfField オブジェクトを取得します。
  • PdfField オブジェクトがテキスト ボックスのような特定のフィールドの種類であるかどうかを判断します。もしそうなら、PdfTextBoxFieldWidget.setText() メソッドを使用して、テキストボックスのテキストを設定します。
  • この判断を繰り返して、ラジオ ボタン、チェック ボックス、コンボ ボックス、リスト ボックスを入力します。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを保存します。
  • Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.widget.*;

public class fillFormFields {

    public static void main(String[] args) {

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

        //フォームを含むPDF文書を読み込む
        doc.loadFromFile("フォーム.pdf");

        //文書からフォームを取得する
        PdfFormWidget form = (PdfFormWidget)doc.getForm();

        //フォーム ウィジェットのコレクションを取得する
        PdfFormFieldWidgetCollection formWidgetCollection = form.getFieldsWidget();

        //ウィジェットをループする
        for (int i = 0; i < formWidgetCollection.getCount(); i++)
        {
            //指定のフィールドを取得する
            PdfField field = formWidgetCollection.get(i);

            //フィールドがテキスト ボックスかどうかを判断する
            if (field instanceof PdfTextBoxFieldWidget)
            {
                if (field.getName().equals("名前"))
                {
                    //テキスト ボックスのテキストを設定する
                    PdfTextBoxFieldWidget textBoxField = (PdfTextBoxFieldWidget)field;
                    textBoxField.setText("ジョン・スミス");
                }
            }

            //フィールドがラジオ ボタンかどうかを判断する
            if (field instanceof PdfRadioButtonListFieldWidget)
            {
                if (field.getName().equals("性別"))
                {
                    //ラジオ ボタンの選択したインデックスを設定する
                    PdfRadioButtonListFieldWidget radioButtonListField = (PdfRadioButtonListFieldWidget)field;
                    radioButtonListField.setSelectedIndex(0);
                }
            }

            //フィールドがコンボ ボックスかどうかを判断する
            if (field instanceof PdfComboBoxWidgetFieldWidget)
            {
                if (field.getName().equals("国名"))
                {
                    //コンボ ボックスの選択したインデックスを設定する
                    PdfComboBoxWidgetFieldWidget comboBoxField = (PdfComboBoxWidgetFieldWidget)field;
                    comboBoxField.setSelectedIndex(1);
                }
            }

            //フィールドがチェック ボックスかどうか判断する
            if (field instanceof PdfCheckBoxWidgetFieldWidget)
            {
                //チェックボックスを「チェック済み」に設定する
                PdfCheckBoxWidgetFieldWidget checkBoxField = (PdfCheckBoxWidgetFieldWidget)field;
                switch (checkBoxField.getName())
                {
                    case "音楽":
                    case "映画":
                        checkBoxField.setChecked(true);
                        break;
                }
            }

            //フィールドがリスト ボックスかどうかを判断する
            if (field instanceof PdfListBoxWidgetFieldWidget)
            {
                if (field.getName().equals("学位"))
                {
                    //リスト ボックスの選択したインデックスを設定する
                    PdfListBoxWidgetFieldWidget listBox = (PdfListBoxWidgetFieldWidget)field;
                    listBox.setSelectedIndex(1);
                }
            }
        }

        //ドキュメントを保存する
        doc.saveToFile("フォームフィールドの入力.pdf", FileFormat.PDF);
    }
}

Java:PDF 文書に入力可能なフォームフィールドを作成、入力、削除する方法

既存の PDF 文書内の特定のフィールド/すべてのフィールドを削除する

PDF 文書内のフォームフィールドは、そのインデックスまたは名前によってアクセスすることができ、PdfFieldCollection.remove() メソッドによって削除することができます。以下は、Sprie.PDF for Java を使用して、既存の PDF 文書から特定のフィールドまたはすべてのフィールドを削除する手順です。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfDocument.getForm() メソッドを使用して、ドキュメントからフォームを取得します。
  • PdfFormWidget.getFieldsWidget() メソッドを使用して、フォーム フィールド ウィジェットのコレクションを取得します。
  • ウィジェットのコレクションをループして、特定の PdfField オブジェクトを取得します。PdfFieldCollection.remove() メソッドを使用して、フィールドを順に削除します。
  • 特定のフォームフィールドを削除するには、PdfFormFieldWidgetCollection.get() メソッドを使用してドキュメントからそれを取得し、PdfFieldCollection.remove() メソッドを呼び出してそれを削除していきます。
  • PdfDocument.saveToFile() メソッドを用いてドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.fields.PdfField;
import com.spire.pdf.widget.PdfFormFieldWidgetCollection;
import com.spire.pdf.widget.PdfFormWidget;

public class deleteFormFields {

    public static void main(String[] args) {

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

        //PDFファイルを読み込む
        doc.loadFromFile("入力可能なフォーム.pdf");

        //ドキュメントからフォームを取得する
        PdfFormWidget form= (PdfFormWidget)doc.getForm();

        //フォームからフォーム ウィジェットを取得する
        PdfFormFieldWidgetCollection widgets = form.getFieldsWidget();

        //ウィジェットをループする
        for (int i = widgets.getCount() - 1; i >= 0; i--)
        {
            //指定のフィールドを取得する
            PdfField field = (PdfField)widgets.getList().get(i) ;

            //フィールドを削除する
            widgets.remove(field);
        }

        //特定のフィールドをその名前で取得する
        //PdfField field = widgets.get("name");
        //フィールドを削除する
        //widgets.remove(field);

        //ドキュメントを保存する
        doc.saveToFile("全フィールドの削除.pdf");
    }
}

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

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

PDF レイヤー機能は、PDF ファイルのコンテンツをレイヤーに配置することをサポートします。 ユーザーは、同じ PDF ファイル内で一部のコンテンツを表示するように設定し、一部のコンテンツを非表示にするように選択的に設定できます。PDF レイヤーは、レイヤー化されたアートワーク、地図、および CAD 図面で使用される一般的な要素です。この記事では、Spire.PDF for .NET を使用してPDF のレイヤーを追加、非表示、または削除する方法を紹介します。

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

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

C# と VB.NET で PDF のレイヤーを追加する

Spire.PDF for.NET が提供する PdfDocument.Layers.AddLayer() メソッドでは、PDF にレイヤーの追加をサポートします。PDF レイヤー上にテキスト、線、画像、または形状を描画できます。以下に詳細な操作手順を示します。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF ドキュメントをロードします。
  • PdfDocument.Layers.AddLayer(string) メソッドを使用して、指定した名前のレイヤーを PDF に追加します。
  • PdfDocument.Layers.AddLayer(string, PdfVisibility) メソッドを使用して、レイヤーを追加するときにレイヤーの可視性を設定します。
  • PdfLayer.CreateGraphics() メソッドを使用してレイヤーのキャンバスを作成します。
  • キャンバスにテキスト、画像、またはその他の要素を描画します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Graphics.Layer;
using System.Drawing;

namespace AddLayersToPdf
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentインスタンスを作成し、サンプルPDFをロードする
            PdfDocument pdf = new PdfDocument();
            pdf.LoadFromFile(@"Sample.pdf");

            //AddLayerWatermark メソッドを使用して透かしのレイヤーを追加する
            AddLayerWatermark(pdf);

            //AddLayerHeaderメソッドを使用してヘッドーのレイヤーを追加する
            AddLayerHeader(pdf);

            //結果ドキュメントを保存する
            pdf.SaveToFile("AddLayers.pdf");
            pdf.Close();
        }

        private static void AddLayerWatermark(PdfDocument doc)
        {
            //「透かし」という名前のレイヤーを作成する
            PdfLayer layer = doc.Layers.AddLayer("透かし");

            //フォントを作成する
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Yu Mincho", 48), true);

            //透かしのテキストを指定する
            string watermarkText = "機密";

            //テキストのサイズを取得する
            SizeF fontSize = font.MeasureString(watermarkText);

            //2つのオフセットを計算する
            float offset1 = (float)(fontSize.Width * System.Math.Sqrt(2) / 4);
            float offset2 = (float)(fontSize.Height * System.Math.Sqrt(2) / 4);

            //ページ数を取得する
            int pageCount = doc.Pages.Count;

            //2つの変数を宣言する
            PdfPageBase page;
            PdfCanvas canvas;

            //ページをループする
            for (int i = 0; (i < pageCount); i++)
            {
                page = doc.Pages[i];

                //レイヤーにキャンバスを作成する
                canvas = layer.CreateGraphics(page.Canvas);
                canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2);
                canvas.SetTransparency(0.4f);
                canvas.RotateTransform(-45);

                //レイヤーのキャンバスに文字列を描画する
                canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0);
            }
        }
        private static void AddLayerHeader(PdfDocument doc)
        {
            //「ヘッダー」という名前のレイヤーを作成する
            PdfLayer layer = doc.Layers.AddLayer("ヘッダー");

            //ページのサイズを取得する
            SizeF size = doc.Pages[0].Size;

            //XとYの初期値を指定する
            float x = 90;
            float y = 40;

            //ページ数を取得する
            int pageCount = doc.Pages.Count;

            //2つの変数を宣言する 
            PdfPageBase page;
            PdfCanvas canvas;

            //ページをループする
            for (int i = 0; (i < pageCount); i++)
            {
                //レイヤーに画像を描画する
                PdfImage pdfImage = PdfImage.FromFile(@"image.jpg");
                float width = pdfImage.Width;
                float height = pdfImage.Height;
                page = doc.Pages[i];
                canvas = layer.CreateGraphics(page.Canvas);
                canvas.DrawImage(pdfImage, x, y, width, height);

                //レイヤーに線を描画する
                PdfPen pen = new PdfPen(PdfBrushes.DarkGray, 2);
                canvas.DrawLine(pen, x, (y + (height + 5)), (size.Width - x), (y + (height + 2)));
            }
        }
    }
} 
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Graphics.Layer
Imports System.Drawing

Namespace AddLayersToPdf
    Class Program
        Private Shared Sub Main(ByVal args As String())
            'PdfDocumentインスタンスを作成し、PDFをロードする
            Dim pdf As PdfDocument = New PdfDocument()
            pdf.LoadFromFile("Sample.pdf")

            'AddLayerWatermark メソッドを使用して透かしのレイヤーを追加する
            Program.AddLayerWatermark(pdf)

            'AddLayerHeaderメソッドを使用してヘッドのレイヤーを追加する
            Program.AddLayerHeader(pdf)

            '結果ドキュメントを保存する
            pdf.SaveToFile("AddLayers.pdf")
            pdf.Close()
        End Sub

        Private Shared Sub AddLayerWatermark(ByVal doc As PdfDocument)
            '「透かし」という名前のレイヤーを作成する
            Dim layer As PdfLayer = doc.Layers.AddLayer("透かし")

            'フォントを作成する
            Dim font As PdfTrueTypeFont = New PdfTrueTypeFont(New Font("Yu Mincho", 48), True)

            '透かしのテキストを指定する
            Dim watermarkText = "機密"

            'テキストのサイズを取得する
            Dim fontSize As SizeF = font.MeasureString(watermarkText)

            '2つのオフセットを計算する
            Dim offset1 As Single = fontSize.Width * Math.Sqrt(2) / 4
            Dim offset2 As Single = fontSize.Height * Math.Sqrt(2) / 4

            'ページ数を取得する
            Dim pageCount As Integer = doc.Pages.Count

            '2つの変数を宣言する
            Dim page As PdfPageBase
            Dim canvas As PdfCanvas

            'ページをループする
            Dim i = 0

            While i < pageCount
                page = doc.Pages(i)

                'レイヤーにキャンバスを作成する
                canvas = layer.CreateGraphics(page.Canvas)
                canvas.TranslateTransform(page.Canvas.Size.Width / 2 - offset1 - offset2, page.Canvas.Size.Height / 2 + offset1 - offset2)
                canvas.SetTransparency(0.4F)
                canvas.RotateTransform(-45)

                'レイヤーのキャンバスに文字列を描画する
                canvas.DrawString(watermarkText, font, PdfBrushes.DarkBlue, 0, 0)
                i += 1
            End While
        End Sub
        Private Shared Sub AddLayerHeader(ByVal doc As PdfDocument)
            '「ヘッダー」という名前のレイヤーを作成する
            Dim layer As PdfLayer = doc.Layers.AddLayer("ヘッダー")

            'ページのサイズを取得する
            Dim size As SizeF = doc.Pages(0).Size

            'XとYの初期値を指定する
            Dim x As Single = 90
            Dim y As Single = 40

            'ページ数を取得する
            Dim pageCount As Integer = doc.Pages.Count

            '2つの変数を宣言する 
            Dim page As PdfPageBase
            Dim canvas As PdfCanvas

            'ページをループする
            Dim i = 0

            While i < pageCount
                'レイヤーに画像を描画する
                Dim pdfImage As PdfImage = PdfImage.FromFile("image.jpg")
                Dim width As Single = pdfImage.Width
                Dim height As Single = pdfImage.Height
                page = doc.Pages(i)
                canvas = layer.CreateGraphics(page.Canvas)
                canvas.DrawImage(pdfImage, x, y, width, height)

                'レイヤーに線を描画する
                Dim pen As PdfPen = New PdfPen(PdfBrushes.DarkGray, 2)
                canvas.DrawLine(pen, x, y + (height + 5), size.Width - x, y + (height + 2))
                i += 1
            End While
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

C# と VB.NET で PDF のレイヤーの可視性を設定する

既存のレイヤーの可視性を設定するには、PdfDocument.Layers プロパティを使用して、インデックスまたは名前で指定したレイヤーを取得します。次に、PdfLayer.Visibility プロパティを使用してレイヤーを表示または非表示にします。以下に詳細な操作手順を示します。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用してサンプル PDF をロードします。
  • PdfDocument.Layers.Visibility プロパティを使用して、指定したレイヤーの可視性を設定します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics.Layer;

namespace HideLayer
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentインスタンスを作成する
            PdfDocument pdf = new PdfDocument();

            //サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf");

            //指定したレイヤーをインデックスで非表示にする
            pdf.Layers[0].Visibility = PdfVisibility.Off;

            //指定したレイヤーを名前で非表示にする
            //pdf.Layers["Watermark"].Visibility = PdfVisibility.Off;

            //結果ドキュメントを保存する
            pdf.SaveToFile("HideLayer.pdf");
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics.Layer

Namespace HideLayer
    Class Program
        Private Shared Sub Main(ByVal args() As String)

            'PdfDocumentインスタンスを作成する
            Dim pdf As PdfDocument = New PdfDocument

            'サンプルPDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf")

            '指定したレイヤーをインデックスで非表示にする
            pdf.Layers(0).Visibility = PdfVisibility.Off

            '指定したレイヤーを名前で非表示にする
            'pdf.Layers["Watermark"].Visibility = PdfVisibility.Off;

            '結果ドキュメントを保存する
            pdf.SaveToFile("HideLayer.pdf")
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

C# とVB.NET で PDF のレイヤーを削除する

Spire.PDF for .NET では、PdfDocument.Layers.RemoveLayer(string) メソッドを使用して、既存のレイヤーを名前で削除することがサポートします。ただし、同名の PDF レイヤーが存在する場合があります。このメソッドは、同じ名前のすべての PDF レイヤーを削除します。詳細な手順は次のとおりです。

  • PdfDocument インスタンスを作成します。
  • PdfDocument.LoadFromFile() メソッドを使用して、PDF ドキュメントをロードします。
  • PdfDocument.Layers.RemoveLayer(string) メソッドを使用して、指定したレイヤーを名前で削除します。
  • PdfDocument.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Pdf;

namespace DeleteLayer
{
    class Program
    {
        static void Main(string[] args)
        {
            //PdfDocumentインスタンスを作成する
            PdfDocument pdf = new PdfDocument();

            //PDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf");

            //名前でレイヤーを削除する
            pdf.Layers.RemoveLayer(("透かし"));

            //結果ドキュメントを保存する
            pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF);
        }
    }
}
Imports Spire.Pdf

Namespace DeleteLayer
    Class Program
        Private Shared Sub Main(ByVal args() As String)
            'PdfDocumentインスタンスを作成する
            Dim pdf As PdfDocument = New PdfDocument

            'PDFドキュメントをロードする
            pdf.LoadFromFile("AddLayers.pdf")

            '名前でレイヤーを削除する
            pdf.Layers.RemoveLayer("透かし")

            '結果ドキュメントを保存する
            pdf.SaveToFile("DeleteLayer.pdf", FileFormat.PDF)
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF のレイヤーを追加、非表示、または削除する方法

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

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

画像は、視聴者にすぐに気づかれ、記憶されやすいので、情報を伝える上で非常に効果的です。PowerPoint に画像を追加する方法については、魅力的なプレゼンテーションを作成し、視聴者に良い印象を与えるのに役立ちます。この記事では、Spire.Presentation for .NET を使用して、C# および VB.NET で PowerPoint に画像を追加する方法を示します。

Spire.Presentation for.NET をインストールします

まず、Spire.Presentation for .NET パッケージに含まれている DLL ファイルを.NETプロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Presentation

C# および VB.NET でスライドに画像を追加する

Spire.Presentation が提供する ISlide.Shapes.AppendEmbedImage() メソッドは、特定のスライドに画像の追加をサポートします。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します。
  • Presentation.LoadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.Slides[int] プロパティを使用して特定のスライドをインデックスで取得します。
  • ISlide.Shapes.AppendEmbedImage() メソッドを使用してスライドに画像を追加します。
  • Presentation.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Presentation;
using Spire.Presentation.Drawing;
using System.Drawing;

namespace AddImageToSlide
{
    class Program
    {
        static void Main(string[] args)
        {
            //Presentationクラスのインスタンスを初期化する
            Presentation presentation = new Presentation();
            //PowerPointドキュメントをロードする
            presentation.LoadFromFile(@"Input.pptx");

            //最初のスライドを取得する
            ISlide slide = presentation.Slides[0];
           
            //スライドに画像を挿入する
            string ImageFile2 = @"Image.png";
            RectangleF rect = new RectangleF(presentation.SlideSize.Size.Width / 2 - 340, 220, 180, 180);
            IEmbedImage image = slide.Shapes.AppendEmbedImage(ShapeType.Rectangle, ImageFile2, rect);
            image.Line.FillType = FillFormatType.None;

            //結果ドキュメントを保存する
            presentation.SaveToFile("InsertImageIntoSlide.pptx", FileFormat.Pptx2010);
        }
    }
}
Imports Spire.Presentation
Imports Spire.Presentation.Drawing
Imports System.Drawing

Namespace AddImageToSlide
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Presentationクラスのインスタンスを初期化する
            Dim presentation As Presentation = New Presentation()
            'PowerPointドキュメントをロードする
            presentation.LoadFromFile("Input.pptx")

            '最初のスライドを取得する
            Dim slide As ISlide = presentation.Slides(0)

            'スライドに画像を挿入する
            Dim ImageFile2 = "Image.png"
            Dim rect As RectangleF = New RectangleF(presentation.SlideSize.Size.Width / 2 - 340, 220, 180, 180)
            Dim image As IEmbedImage = slide.Shapes.AppendEmbedImage(ShapeType.Rectangle, ImageFile2, rect)
            image.Line.FillType = FillFormatType.None

            '結果ドキュメントを保存する
            presentation.SaveToFile("InsertImageIntoSlide.pptx", FileFormat.Pptx2010)
        End Sub
    End Class
End Namespace

C#/VB.NET:PowerPoint に画像を追加する方法

C# および VB.NET でスライドマスターに画像を追加する

スライド マスターは、スライドのテーマ、レイアウト、背景、色、フォントなどの情報を制御できる一番上のスライドです。 スライド マスターの情報は他のスライドにも影響します。 つまり、スライド マスターの情報を変更すると、後で追加されたスライドを含め、他のスライドもそれに応じて変更されます。 画像をすべてのスライドに表示する場合は、スライドマスターに追加できます。

Spire.Presentation が提供する IMasterSlide.Shapes.AppendEmbedImage() メソッドは、スライド マスターに画像の追加をサポートします。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します。
  • Presentation.LoadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.Masters[int] プロパティを使用して、特定のスライドマスターをインデックスで取得します。
  • IMasterSlide.Shapes.AppendEmbedImage() メソッドを使用してスライドマスターに画像を追加します。
  • Presentation.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Presentation;
using Spire.Presentation.Drawing;
using System.Drawing;

namespace AddImageToSlideMaster
{
    class Program
    {
        static void Main(string[] args)
        {
            //Presentationクラスのインスタンスを初期化する
            Presentation presentation = new Presentation();
            //PowerPointドキュメントをロードする
            presentation.LoadFromFile(@"Sample.pptx");

            //最初のスライドマスターを取得する
            IMasterSlide master = presentation.Masters[0];
            
            //スライドマスターに画像を挿入する
            string image = @"logo.png";
            RectangleF rect = new RectangleF(40, 40, 80, 80);
            IEmbedImage pic = master.Shapes.AppendEmbedImage(ShapeType.Rectangle, image, rect);
            pic.Line.FillFormat.FillType = FillFormatType.None;

            //プレゼンテーションへに新しいスライドを追加する
            presentation.Slides.Append();

            //結果ドキュメントを保存する
            presentation.SaveToFile("InsertImageIntoSlideMaster.pptx", FileFormat.Pptx2010);
        }
    }
}
Imports Spire.Presentation
Imports Spire.Presentation.Drawing
Imports System.Drawing

Namespace AddImageToSlideMaster
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Presentationクラスのインスタンスを初期化する
            Dim presentation As Presentation = New Presentation()
            'PowerPointドキュメントをロードする
            presentation.LoadFromFile("Sample.pptx")

            '最初のスライドマスターを取得する
            Dim master As IMasterSlide = presentation.Masters(0)

            'スライドマスターに画像を挿入する
            Dim image = "logo.png"
            Dim rect As RectangleF = New RectangleF(40, 40, 80, 80)
            Dim pic As IEmbedImage = master.Shapes.AppendEmbedImage(ShapeType.Rectangle, image, rect)
            pic.Line.FillFormat.FillType = FillFormatType.None

            'プレゼンテーションへに新しいスライドを追加する
            presentation.Slides.Append()

            '結果ドキュメントを保存する            presentation.SaveToFile("InsertImageIntoSlideMaster.pptx", FileFormat.Pptx2010)
        End Sub
    End Class
End Namespace

C#/VB.NET:PowerPoint に画像を追加する方法

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

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

Spire.Office 8.1.4のリリースを発表できることを嬉しく思います。このバージョンでは、Spire.DocではWordからPDF、HTML、および画像への変換機能が強化されました。Spire.XLSではExcelからPDF、XLSからXLSXへの変換機能が強化されました。Spire.Presentationはコメントに返信する機能をサポートしました。Spire.Spreadsheetでは、Excelドキュメントをロードする際にアプリケーションが異常をスローした問題が修正されました。さらに、このバージョンでは、多くの既知の問題も修正しました。詳細は以下の内容を読んでください。

このバージョンでは、Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.DocViewer, Spire.Barcode, Spire.DataExportの最新バージョンが含まれています。

DLL Versions:
  • Spire.Doc.dll v11.1.5
  • Spire.Pdf.dll v9.1.0
  • Spire.XLS.dll v13.1.1
  • Spire.Presentation.dll v8.1.1
  • Spire.Email.dll v5.12.19
  • Spire.DocViewer.Forms.dll v7.10.0
  • Spire.PdfViewer.Forms.dll v7.10.0
  • Spire.PdfViewer.Asp.dll v7.10.0
  • Spire.Spreadsheet.dll v6.12.0
  • Spire.OfficeViewer.Forms.dll v8.1.4
  • Spire.Barcode.dll v6.12.1
  • Spire.DataExport.dll v4.8.0
  • Spire.DataExport.ResourceMgr.dll v2.1.0
ここで Spire.Office 8.1.4をダウンロードする:

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

Spire.Doc

カテゴリー ID 説明
Bug SPIREDOC-4770 WordをPDFに変換した後のページングが正しくない問題が修正されました。
Bug SPIREDOC-8505 WordをPDFに変換して修正を受けた効果が正しくない問題が修正されました。
Bug SPIREDOC-8634 WordをPDFに変換した後、内容が1カラムから2カラムに変わった問題が修正されました。
Bug SPIREDOC-8652 WordをPDFに変換した後にヘッダーが重複していた問題が修正されました。
Bug SPIREDOC-8716 WordをPDFに変換した後にヘッダーが重なっていた問題が修正されました。
Bug SPIREDOC-8867 Wordを画像に変換した後のタイトル表示が不完全だった問題が修正されました。
Bug SPIREDOC-8898 生成されたdocドキュメントをWPSで開くと、表の枠線の太字スタイルが失われた問題が修正されました。
Bug SPIREDOC-8964 WordをHTMLに変換する際にアプリケーションが「System.ArgumentOutOfRangeException」をスローする問題が修正されました。

Spire.XLS

カテゴリー ID 説明
Bug SPIREXLS-1105 sheet1.CopyFrom(sheet2)メソッドを使用してsheetコンテンツをコピーすると、アプリケーションが「Maximum number of extended formats exceeded」をスローする問題が修正されました。
Bug SPIREXLS-4310 UTF 8エンコードされたHTMLをロードする際にアプリケーションが「System.ArgumentException」をスローする問題が修正されました。
Bug SPIREXLS-4320 グラフを画像に変換するときに棒グラフが座標軸の左側から飛び出してしまう問題が修正されました。
Bug SPIREXLS-4334 XLSをXLSXに変換する際にアプリケーションが「System.Xml.XmlException」をスローする問題が修正されました。
Bug SPIREXLS-4338 「CopyRangeOptions copyOptions = CopyRangeOptions.OnlyCopyFormulaValue;」の設定が機能しない問題が修正されました。
Bug SPIREXLS-4358 sheetを削除する際にアプリケーションが「System.ArgumentOutOfRangeException」をスローした問題が修正されました。
Bug SPIREXLS-4365 XLSMドキュメントをロードして保存した後にマクロが失われていた問題が修正されました。
Bug SPIREXLS-4373 ドキュメントを保護した後のメニューの機能が正しくない問題が修正されました。
Bug SPIREXLS-4375 式の計算に失敗した問題が修正されました。
Bug SPIREXLS-4381 計算された式の値が正しくない問題が修正されました。
Bug SPIREXLS-4384 ExcelをPDFに変換した後の日付フォーマットが正しくない問題が修正されました。

Spire.Presentation

カテゴリー ID 説明
New feature SPIREPPT-2133 コメントに返信する機能がサポートしました。
Presentation ppt = new Presentation();
ICommentAuthor author = ppt.CommentAuthors.AddAuthor("E-iceblue", "comment");
ppt.Slides[0].AddComment(author, "Add comment", new System.Drawing.Point(18, 25), DateTime.Now);
Comment comment = ppt.Slides[0].Comments[0];
if (!comment.IsReply)
 {
 comment.Reply(author, "Add Reply1", DateTime.Now);
 comment.Reply(author, "Add Reply2", DateTime.Now);
 }
ppt.Slides[0].DeleteComment(author, "Add Reply1");
ppt.SaveToFile(outputFile, FileFormat.Pptx2013);
Bug SPIREPPT-2124 生成された Excel でグラフのデータの null 値が0になる問題が修正されました。
Bug SPIREPPT-2124 組み合わせをキャンセルすると形状の向きが変更される問題を修正しました。

Spire.Spreadsheet

カテゴリー ID 説明
Bug SPREADSHEET-211 Excelドキュメントをロードする際にアプリケーションが「System.ArgumentOutOfRangeException」をスローした問題が修正されました。

Spire.Doc 11.1.4のリリースを発表できることを嬉しく思います。このバージョンでは、WordからPDF、HTML、および画像への変換機能が強化されました。また、生成されたdocドキュメントをWPSで開くと、表の枠線の太字スタイルが失われた問題などの既知の問題も修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREDOC-4770 WordをPDFに変換した後のページングが正しくない問題が修正されました。
Bug SPIREDOC-8505 WordをPDFに変換して修正を受けた効果が正しくない問題が修正されました。
Bug SPIREDOC-8634 WordをPDFに変換した後、内容が1カラムから2カラムに変わった問題が修正されました。
Bug SPIREDOC-8652 WordをPDFに変換した後にヘッダーが重複していた問題が修正されました。
Bug SPIREDOC-8716 WordをPDFに変換した後にヘッダーが重なっていた問題が修正されました。
Bug SPIREDOC-8867 Wordを画像に変換した後のタイトル表示が不完全だった問題が修正されました。
Bug SPIREDOC-8898 生成されたdocドキュメントをWPSで開くと、表の枠線の太字スタイルが失われた問題が修正されました。
Bug SPIREDOC-8964 WordをHTMLに変換する際にアプリケーションが「System.ArgumentOutOfRangeException」をスローする問題が修正されました。
ここで Spire.Doc 11.1.4をダウンロードする

スピーチの内容が非常に抽象的な場合、言葉だけでメッセージを聴衆に明確に伝えるのは難しい場合があります。 PowerPoint プレゼンテーションに画像を追加すると、意見をより明確に伝え、聴衆との間の誤解を最小限に抑えることができます。 必要に応じて、PowerPoint から既存の画像を抽出することもできます。この記事では、Spire.Presentation for Java を使用して PowerPoint に画像を追加または抽出する方法を紹介します。

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

まず、Spire.Presentation 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.presentation</artifactId>
        <version>8.1.2</version>
    </dependency>
</dependencies>

Java でスライドに画像を追加する

Spire.Presentation が提供する ISlide.getShapes().appendEmbedImage() メソッドは、特定のスライドに画像の追加をサポートします。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します。
  • Presentation.loadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.getSlides().get(int) メソッドを使用して、インデックスで特定のスライドを取得します。
  • ISlide.getShapes().appendEmbedImage() メソッドを使用してスライドに画像を追加します。
  • Presentation.saveToFile() メソッドを使用して結果ドキュメントを保存します。
  • Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;

import java.awt.geom.Rectangle2D;

public class AddImageToSlide {
    public static void main(String []args) throws Exception {
        //Presentationクラスのインスタンスを初期化する
        Presentation presentation = new Presentation();
        //PowerPointドキュメントをロードする
        presentation.loadFromFile("Input.pptx");

        //最初のスライドを取得する
        ISlide slide = presentation.getSlides().get(0);

        //スライドに画像を追加する
        String imageFile = "image.png";
        Rectangle2D.Double rect1 = new Rectangle2D.Double(presentation.getSlideSize().getSize().getWidth() / 2 - 280, 140, 120, 120);
        IEmbedImage image = slide.getShapes().appendEmbedImage(ShapeType.RECTANGLE, imageFile, rect1);
        image.getLine().setFillType(FillFormatType.NONE);

        //結果ドキュメントを保存する
        presentation.saveToFile("AddImageToSlide.pptx", FileFormat.PPTX_2013);
    }
}

Java:PowerPoint に画像を追加または抽出する方法

Java でスライドマスターに画像を追加する

スライド マスターは、スライドのテーマ、レイアウト、背景、色、フォントなどの情報を制御できる一番上のスライドです。 スライド マスターの情報は他のスライドにも影響します。 つまり、スライド マスターの情報を変更すると、後で追加されたスライドを含め、他のスライドもそれに応じて変更されます。 画像をすべてのスライドに表示する場合は、スライドマスターに追加できます。

Spire.Presentationが提供する IMasterSlide.getShapes().appendEmbedImage() メソッドは、スライド マスターに画像の追加をサポートします。詳細な手順は次のとおりです。

  • Presentation.loadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.getMasters().get(int) メソッドを使用して、インデックスでスライド マスターを取得します。
  • IMasterSlide.getShapes().appendEmbedImage() メソッドを使用して、スライド マスターに画像を追加します。
  • Presentation.saveToFile() メソッドを使用して結果ドキュメントを保存します。
  • Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;

import java.awt.geom.Rectangle2D;

public class AddImageToSlideMaster {
    public static void main(String []args) throws Exception {
        //Presentationクラスのインスタンスを初期化する
        Presentation presentation = new Presentation();
        //PowerPointドキュメントをロードする
        presentation.loadFromFile("Sample.pptx");

        //最初のスライドマスターを取得する
        IMasterSlide master = presentation.getMasters().get(0);

        //スライドマスターに画像を挿入する
        String image = "logo.png";
        Rectangle2D.Double rect = new Rectangle2D.Double(40, 40, 80, 80);
        IEmbedImage pic = master.getShapes().appendEmbedImage(ShapeType.RECTANGLE, image, rect);
        pic.getLine().getFillFormat().setFillType(FillFormatType.NONE);

        //プレゼンテーションへに新しいスライドを追加する
        presentation.getSlides().append();

        //PowerPointドキュメントをロードする
        presentation.saveToFile("AddImageToSlideMaster.pptx", FileFormat.PPTX_2013);
    }
}

Java:PowerPoint に画像を追加または抽出する方法

Java でスライドから画像を抽出する

特定のスライドから画像を抽出するには、スライドのすべての図形をループします。SlidePicture または PictureShape タイプの図形をを検索し、SlidePicture.getPictureFill().getPicture().getEmbedImage().getImage() または PictureShape.getEmbedImage().getImage() メソッドを使用して画像を取得します。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します。
  • Presentation.loadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.getSlides().get(int) メソッドを使用して、インデックスで特定のスライドを取得します。
  • スライドのすべての図形をループします。
  • 図形が SlidePicture または PictureShape タイプであるかどうかを確認します。結果がtrueの場合は、SlidePicture.getPictureFill().getPicture().getEmbedImage().getImage() または PictureShape.getEmbedImage().getImage() メソッドを使用して画像を取得します。
  • 画像を PNG に保存します。
  • Java
import com.spire.presentation.*;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public class ExtractImageFromSlide {
    public static void main(String []args) throws Exception {
        //Presentationクラスのインスタンスを初期化する
        Presentation ppt = new Presentation();
        //PowerPointドキュメントをロードする
        ppt.loadFromFile("Images.pptx");

        //最初のスライドを取得する
        ISlide slide = ppt.getSlides().get(0);

        //スライドのすべての図形をループする
        for(int i = 0; i< slide.getShapes().getCount(); i++)
        {
            IShape shape = slide.getShapes().get(i);
            //スライドから画像を抽出する
            if(shape instanceof SlidePicture)
            {
                SlidePicture pic = (SlidePicture) shape;
                BufferedImage image = pic.getPictureFill().getPicture().getEmbedImage().getImage();
                ImageIO.write(image, "PNG",  new File(String.format("slide/" + "extractImage-%1$s.png", i)));
            }
            if(shape instanceof PictureShape)
            {
                PictureShape ps = (PictureShape) shape;
                BufferedImage image = ps.getEmbedImage().getImage();
                ImageIO.write(image, "PNG",  new File(String.format("slide/" + "extractImage-%1$s.png", i)));
            }
        }
    }
}

Java:PowerPoint に画像を追加または抽出する方法

Java で PowerPoint からすべての画像を抽出する

PowerPoint からすべての画像を抽出するには、Presentation.getImages() メソッドを使用してドキュメントの画像コレクションを取得します。その画像コレクションをループし、ImageCollection.get(int).getImage() メソッドを使用して画像を取得します。詳細な手順は次のとおりです。

  • Presentation クラスのインスタンスを初期化します。
  • Presentation.loadFromFile() メソッドを使用して PowerPoint ドキュメントをロードします。
  • Presentation.getImages() メソッドを使用して、ドキュメントの画像コレクションを取得します。
  • 画像 コレクションをループし、ImageCollection.get(int).getImage() メソッドを使用して画像を取得します。
  • 画像を PNG に保存します。
  • Java
import com.spire.presentation.Presentation;
import com.spire.presentation.collections.ImageCollection;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;

public class ExtractAllImagesFromPowerPoint {
    public static void main(String []args) throws Exception {
        //Presentationクラスのインスタンスを初期化する
        Presentation ppt = new Presentation();
        //PowerPointドキュメントをロードする
        ppt.loadFromFile("Images.pptx");

        //ドキュメントの画像コレクションを取得する
        ImageCollection collection = ppt.getImages();
        
        //画像コレクションをループする
        for (int i = 0; i < collection.getCount(); i++) {
            //コレクションから画像を取得する 
            BufferedImage image = collection.get(i).getImage();
            ImageIO.write(image, "PNG",  new File(String.format("presentation/" + "extractImage-%1$s.png", i)));
        }
    }
}

Java:PowerPoint に画像を追加または抽出する方法

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

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

場合によっては、Word ドキュメント内の画像を別の画像やテキストに置き換えたい場合があります。たとえば、履歴書を作成する場合、テンプレートの元にある画像を自分の写真に置き換える必要があります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word の画像を置き換える方法を示します。

Spire.Doc for .NET をインストールします

まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.Doc

C# および VB.NET で Word の画像を新しい画像に置き換る

Word 内の画像を別の画像に置き換えるには、ドキュメントの要素をループします。画像を検索してリストに追加します。次に、置換する画像をリストから取得し、DocPicture.LoadImage() メソッドを使用して別の画像に置換します。詳細な手順は次のとおりです。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • List クラスのインスタンスを初期化します。
  • ドキュメント内のすべてのセクションをループします。
  • 各セクションのすべての段落をループします。
  • 各段落のすべてのサブオブジェクトをループします。
  • 画像を検索してリストに追加します。
  • リストから特定の画像を取得し、DocPicture.LoadImage() メソッドを使用して別の画像に置換します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections.Generic;
using System.Drawing;

namespace ReplaceImageWithImage
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロードする
            doc.LoadFromFile("Sample.docx");

            //Listクラスのインスタンスを初期化する
            List pictures = new List();

            //ドキュメント内のすべてのセクションをループする
            foreach (Section sec in doc.Sections)
            {
                //各セクションのすべての段落をループする
                foreach (Paragraph para in sec.Paragraphs)
                {
                    //各段落内のすべてのサブオブジェクトをループする
                    foreach (DocumentObject docObj in para.ChildObjects)
                    {
                        //画像を検索してリストに追加する
                        if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            pictures.Add(docObj);
                        }
                    }
                }
            }

            //リストの最初の画像を別の画像に置き換える
            DocPicture picture = pictures[0] as DocPicture;
            picture.LoadImage(Image.FromFile(@"doc.png"));

            //結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithNewImage.docx", FileFormat.Docx2013);

        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Collections.Generic

Namespace ReplaceImageWithImage
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロードする
            doc.LoadFromFile("Sample.docx")

            'Listクラスのインスタンスを初期化する
            Dim pictures As List(Of DocumentObject) = New List(Of DocumentObject)()

            'ドキュメント内のすべてのセクションをループする
            For Each sec As Section In doc.Sections
                '各セクションのすべての段落をループする
                For Each para As Paragraph In sec.Paragraphs
                    '各段落内のすべてのサブオブジェクトをループする
                    For Each docObj As DocumentObject In para.ChildObjects
                        '画像を検索してリストに追加する
                        If docObj.DocumentObjectType Is DocumentObjectType.Picture Then
                            pictures.Add(docObj)
                        End If
                    Next
                Next
            Next

            'リストの最初の画像を別の画像に置き換える
            Dim picture As DocPicture = TryCast(pictures(0), DocPicture)
            picture.LoadImage(Image.FromFile("doc.png"))

            '結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithNewImage.docx", FileFormat.Docx2013)

        End Sub
    End Class
End Namespace

C#/VB.NET:Word の画像を置き換える方法

C# および VB.NET で Word の画像をテキストに置き換える

Spire.Doc は画像をテキストに直接置き換える方法を提供していない。しかし、この機能は、画像の位置にテキストを挿入し、ドキュメントから画像を削除することで実現できます。次の手順では、Word 内のすべての画像をテキストに置換き換える方法を示します。

  • Document クラスのインスタンスを初期化します。
  • Document.LoadFromFile() メソッドを使用して Word ドキュメントをロードします。
  • ドキュメント内のすべてのセクションをループします。
  • 各セクションのすべての段落をループします。
  • List クラスのインスタンスを初期化します。
  • 各段落のすべてのサブオブジェクトをループします。
  • 画像を検索してリストに追加します。
  • リスト内の画像をループします。
  • Paragraph.ChildObjects.Indexof() メソッドを使用して、段落の画像のインデックスを取得します。
  • TextRange クラスのインスタンスを初期化し、TextRange.Text プロパティを使用してテキスト範囲のテキストを設定します。
  • Paragraph.ChildObjects.Insert() メソッドを使用して、画像の位置にテキスト範囲を挿入します。
  • Paragraph.ChildObjects.Remove() メソッドを使用して段落から画像を削除します。
  • Document.SaveToFile() メソッドを使用して結果ドキュメントを保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Collections.Generic;

namespace ReplaceImageWithText
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Documentクラスのインスタンスを初期化する
            Document doc = new Document();
            //Wordドキュメントをロード する
            doc.LoadFromFile("Sample.docx");

            int j = 1;
            //ドキュメント内のすべてのセクションをループする
            foreach (Section sec in doc.Sections)
            {
                //各セクションのすべての段落をループする
                foreach (Paragraph para in sec.Paragraphs)
                {
                    //Listクラスのインスタンスを初期化する
                    List pictures = new List();
                    //画像を検索してリストに追加する
                    foreach (DocumentObject docObj in para.ChildObjects)
                    {
                        if (docObj.DocumentObjectType == DocumentObjectType.Picture)
                        {
                            pictures.Add(docObj);
                        }
                    }

                    //リスト内のすべての画像をループし、テキストに置き換える
                    foreach (DocumentObject pic in pictures)
                    {
                        int index = para.ChildObjects.IndexOf(pic);
                        TextRange range = new TextRange(doc);
                        range.Text = string.Format("Image-{0}", j);
                        para.ChildObjects.Insert(index, range);
                        para.ChildObjects.Remove(pic);
                        j++;
                    }
                }
            }

            //結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithText.docx", FileFormat.Docx);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Collections.Generic

Namespace ReplaceImageWithText
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Documentクラスのインスタンスを初期化する
            Dim doc As Document = New Document()
            'Wordドキュメントをロード する
            doc.LoadFromFile("Sample.docx")

            Dim j = 1
            'ドキュメント内のすべてのセクションをループする
            For Each sec As Section In doc.Sections
                '各セクションのすべての段落をループする
                For Each para As Paragraph In sec.Paragraphs
                    'Listクラスのインスタンスを初期化する
                    Dim pictures As List(Of DocumentObject) = New List(Of DocumentObject)()
                    '画像を検索してリストに追加する
                    For Each docObj As DocumentObject In para.ChildObjects
                        If docObj.DocumentObjectType Is DocumentObjectType.Picture Then
                            pictures.Add(docObj)
                        End If
                    Next

                    'リスト内のすべての画像をループし、テキストに置き換える
                    For Each pic As DocumentObject In pictures
                        Dim index As Integer = para.ChildObjects.IndexOf(pic)
                        Dim range As TextRange = New TextRange(doc)
                        range.Text = String.Format("Image-{0}", j)
                        para.ChildObjects.Insert(index, range)
                        para.ChildObjects.Remove(pic)
                        j += 1
                    Next
                Next
            Next

            '結果ドキュメントを保存する
            doc.SaveToFile("ReplaceWithText.docx", FileFormat.Docx)
        End Sub
    End Class
End Namespace

C#/VB.NET:Word の画像を置き換える方法

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

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

Excel のワークシートを印刷すると、書式やレイアウトが完璧に整っているワークシートが、印刷後に非常に乱雑な状態になることがあります。これは、エクセルのワークシートはパソコンで内容を見たり編集したりしやすいように設計されており、直接印刷すると画面上の表示と大きく異なることがあるためです。したがって、ワークシートをそのままの書式とレイアウトで印刷するためには、印刷時に印刷オプションを設定する必要があります。この記事では、Spire.XLS for Java を使って Excel ファイルを印刷する方法と、印刷の設定について説明します。

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

まず、Spire. XLS 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.xls</artifactId>
        <version>12.8.4</version>
    </dependency>
</dependencies>

ページ設定によるExcel印刷オプションを設定する

Excel のページ設定には、コメントを印刷するかどうか、グリッドラインを印刷するかどうか、1つのページにワークシートをレイアウトするかどうかなど、ワークシートの印刷方法を制御するオプションが用意されています。

XLS for Java では、これらの印刷オプションを設定するための PageSetup クラスが用意されています。 以下は、PageSetup クラスのメソッドを使って、Spire.XLS for Java で Excel の印刷オプションを設定する方法の説明です。

  • Workbook クラスのオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドで、Excel ファイルを読み込みます。
  • Workbook.getWorksheets().get() メソッドで、指定したワークシートを取得します。
  • Worksheet.getPageSetup() メソッドを使用して、PageSetup クラスのオブジェクトを取得します。
  • PageSetup クラスのメソッドを使用して、ページの余白、印刷領域、ヘッダーを印刷するかどうか、印刷品質などのオプションを設定します。
  • PrinterJob.print() メソッドを使用して、ワークブックを印刷します。
  • Java
import com.spire.xls.*;

import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class setPrintOptions {

    public static void main(String[] args) {

        //Workbookクラスのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("貸借対照表.xlsx");

        //1つ目のワークシートを取得する
        Worksheet worksheet = workbook.getWorksheets().get(0);

        //PageSetupクラスのオブジェクトを作成し、1つ目のワークシートからページ設定を取得する
        PageSetup pageSetup = worksheet.getPageSetup();

        //余白を設定する
        pageSetup.setTopMargin(0.3);
        pageSetup.setBottomMargin(0.3);
        pageSetup.setLeftMargin(0.3);
        pageSetup.setRightMargin(0.3);

        //印刷する領域を指定する
        pageSetup.setPrintArea("A1:C18");

        //ヘッダー列を指定する
        pageSetup.setPrintTitleRows("$1:$1");

        //ヘッダー列の印刷を許可する
        pageSetup.isPrintHeadings(true);

        //グリッド線の印刷を許可する
        pageSetup.isPrintGridlines(true);

        //コメントの印刷と表示を許可する
        pageSetup.setPrintComments(PrintCommentType.InPlace);

        //印刷品質(dpi)を設定する
        pageSetup.setPrintQuality(300);

        //白黒モードでの印刷を許可する
        pageSetup.setBlackAndWhite(true);

        //印刷順序を設定する
        pageSetup.setOrder(OrderType.OverThenDown);

        //ワークシートを1ページにレイアウトする
        pageSetup.isFitToPage(true);

        //Paperクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();
        PageFormat pageFormat = printerJob.defaultPage();
        Paper paper = pageFormat.getPaper();

        //用紙の描画可能領域を設定する
        paper.setImageableArea(0, 0, pageFormat.getWidth(), pageFormat.getHeight());

        //印刷部数を設定する
        printerJob.setCopies(1);
        pageFormat.setPaper(paper);

        //設定された書式でワークブックをレイアウトする
        printerJob.setPrintable(workbook, pageFormat);

        //印刷を実行する
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }
}

Java:XLS と XLSX ファイルを印刷する方法

Excel ファイルを印刷する際のプリンターを設定する

印刷オプションの設定だけでなく、印刷時にネットワーク上のプリンターを指定する方法や、プリンターの設定方法についても知っておくことが重要です。 次のステップは、Spire.XLS for Java の PrinterJob クラスのメソッドを使用して、プリンタを設定し、Excel ファイルを印刷する方法を示しています。

  • Workbook クラスのオブジェクトを作成します。
  • Workbook.loadFromFile() メソッドを使用して、Excel ファイルを読み込みます。
  • PrinterJob クラスのオブジェクトを作成します。
  • PrinterJob.setPrintService() メソッドでプリンター名を指定します。
  • PrinterJob.setCopies() メソッドを使用して、印刷する部数を設定します。
  • PrinterJob.setPrintable() メソッドでペインターを呼び出して、ワークブックをレンダリングします。
  • PrinterJob.print() メソッドを使用して、ワークブックを印刷します。
  • Java
import com.spire.xls.Workbook;

import javax.print.PrintService;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class specifyPrinterSettings {

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

        //Workbookクラスのオブジェクトを作成する
        Workbook workbook = new Workbook();

        //Excelファイルを読み込む
        workbook.loadFromFile("貸借対照表.xlsx");

        //PrinterJobクラスのオブジェクトを作成する
        PrinterJob printerJob = PrinterJob.getPrinterJob();

        //プリンター名を指定する
        PrintService myPrintService = findPrintService("\\\\192.168.1.104\\HP LaserJet P1007");
        printerJob.setPrintService(myPrintService);

        //PageFormatクラスのオブジェクトを作成し、ページのサイズと向きをデフォルトに設定する
        PageFormat pageFormat  = printerJob.defaultPage();

        //このページ設定を持つPaperクラスのオブジェクトを返す
        Paper paper = pageFormat .getPaper();

        //用紙の描画可能領域を設定する
        paper.setImageableArea(0,0,pageFormat .getWidth(),pageFormat .getHeight());

        //このPaperクラスのオブジェクトでページを設定する
        pageFormat.setPaper(paper);

        //印刷部数を設定する
        printerJob .setCopies(1);

        //ペインターを呼び出して、指定された書式でワークブックを描画する
        printerJob .setPrintable(workbook,pageFormat);

        //印刷を実行する
        try {
            printerJob.print();
        } catch (PrinterException e) {
            e.printStackTrace();
        }
    }

    //プリンター名から印刷サービスを取得する
    private static PrintService findPrintService(String printerName) {

        PrintService[] printServices = PrinterJob.lookupPrintServices();
        for (PrintService printService : printServices) {
            if (printService.getName().equals(printerName)) {
                return printService;
            }
        }
        return null;
    }
}

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

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