チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
PDF 文書内のブックマークは、文書内の特定の場所にリンクされた書式付きテキストで構成されています。文書読者は、頻繁に上下にスクロールして内容を探す必要がなく、ページの横に表示されるしおりをクリックするだけで、文書内の適切な場所に移動することができます。ブックマークは、非常に大きな文書を閲覧する際に特に役立ちます。 よく整理されたブックマークは、目次としても活用できます。 また、大きな文書を作成する場合、重要な内容にはブックマークでリンクを張り、読みながら簡単に探せるようにします。 この記事では、Spire.PDF for Java を使用して PDF 文書にブックマークを追加、編集、削除する方法について説明します。
まず、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 for Java は、PDF 文書にブックマークを追加するために、PdfDocument.getBookmarks().add() メソッドを提供しています。 メインブックマークを追加するだけでなく、PdfBookmark.add() メソッドを使ってメインブックマークにサブブックマークを追加できます。PdfBookmark クラスの下には、ブックマークのリンク対象、文字色や 文字スタイルなどを設定するメソッドが多数用意されています。 PDF 文書にブックマークを追加する詳細な手順は次のとおりです。
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");
}
}
Spire.PDF for Java の PdfBookmark クラスのメソッドを使用して、PDF 文書のしおりを編集することもできます。 詳しい操作手順は以下の通りです。
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();
}
}
Spire.PDF for Java を使用して、PDF ドキュメント内の単一、複数、またはすべてのブックマークを削除することもできます。 ここで、PdfDocument.getBookmarks().removeAt() メソッドは指定されたマスターブックマークを削除するために使用され、PdfDocument.getBookmarks().clear() メソッドはすべてのブックマークを削除するために使用され、PdfBookmark.removeAt() メソッドは1つのマスターブックマークの指定されたサブブックマークを削除するために使用されます。PDF ブックマークを削除する詳細な手順は次のとおりです。
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");
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
java.awt.print パッケージは、一般的な印刷に必要なクラスとメソッドを提供し、プリンタ名の指定、印刷範囲の設定、両面印刷の設定、カスタム用紙サイズの設定など、ドキュメントの種類の指定と印刷オプションの管理を行うことができます。この記事では、Spire.PDF for Java クラスライブラリと java.awt.print パッケージを使用して、PDF ドキュメントを印刷する方法を説明します。
まず、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>
印刷時にプリンター名が指定されていない場合、プログラムはデフォルトのプリンターを使用してドキュメントを印刷します。以下は、java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントをデフォルトのプリンターで印刷する手順です。
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 ドキュメントの指定した範囲のページを、指定したプリンターで印刷する手順を説明します。
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 ドキュメントを印刷する場合、印刷ダイアログで印刷を設定することもできます。 ここでは、java.awt.print と Spire.PDF for Java を使用して、印刷ダイアログから PDF ドキュメントを印刷する手順を説明します。
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();
}
}
}
}
java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントを両面印刷する手順を説明します。
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();
}
}
}
Paper クラスのメソッドでは、印刷時の用紙サイズを設定することができます。 用紙サイズは、Paper.setSize() メソッドでカスタマイズすることができます。java.awt.print と Spire.PDF for Java を使用して、PDF ドキュメントをカスタム用紙サイズに印刷する手順を説明します。
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 を 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 フォームを作成するには、対応するフィールドクラスのインスタンスを初期化します。setBounds() メソッドを使用してドキュメント内の特定のフィールドのサイズと位置を指定し、次に PdfFormFieldCollection.add() メソッドを使用して PDF にそれを追加します。以下は、Spire.PDF for Java を使用して PDF 文書内に様々な種類のフォームフィールドを作成する手順です。
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);
}
}
フォームに入力するためには、まず PDF 文書から全てのフォームフィールドを取得し、あるフィールドのタイプを決定し、それから値を入力するか、またはあらかじめ定義されたリストから値を選択する必要があります。以下は、Spire.PDF for Java を使用して、既存の PDF 文書にフォームフィールドを入力する手順です。
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);
}
}
PDF 文書内のフォームフィールドは、そのインデックスまたは名前によってアクセスすることができ、PdfFieldCollection.remove() メソッドによって削除することができます。以下は、Sprie.PDF for Java を使用して、既存の PDF 文書から特定のフィールドまたはすべてのフィールドを削除する手順です。
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 パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF
Spire.PDF for.NET が提供する PdfDocument.Layers.AddLayer() メソッドでは、PDF にレイヤーの追加をサポートします。PDF レイヤー上にテキスト、線、画像、または形状を描画できます。以下に詳細な操作手順を示します。
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
既存のレイヤーの可視性を設定するには、PdfDocument.Layers プロパティを使用して、インデックスまたは名前で指定したレイヤーを取得します。次に、PdfLayer.Visibility プロパティを使用してレイヤーを表示または非表示にします。以下に詳細な操作手順を示します。
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
Spire.PDF for .NET では、PdfDocument.Layers.RemoveLayer(string) メソッドを使用して、既存のレイヤーを名前で削除することがサポートします。ただし、同名の PDF レイヤーが存在する場合があります。このメソッドは、同じ名前のすべての PDF レイヤーを削除します。詳細な手順は次のとおりです。
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
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
画像は、視聴者にすぐに気づかれ、記憶されやすいので、情報を伝える上で非常に効果的です。PowerPoint に画像を追加する方法については、魅力的なプレゼンテーションを作成し、視聴者に良い印象を与えるのに役立ちます。この記事では、Spire.Presentation for .NET を使用して、C# および VB.NET で PowerPoint に画像を追加する方法を示します。
まず、Spire.Presentation for .NET パッケージに含まれている DLL ファイルを.NETプロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Presentation
Spire.Presentation が提供する ISlide.Shapes.AppendEmbedImage() メソッドは、特定のスライドに画像の追加をサポートします。詳細な手順は次のとおりです。
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
スライド マスターは、スライドのテーマ、レイアウト、背景、色、フォントなどの情報を制御できる一番上のスライドです。 スライド マスターの情報は他のスライドにも影響します。 つまり、スライド マスターの情報を変更すると、後で追加されたスライドを含め、他のスライドもそれに応じて変更されます。 画像をすべてのスライドに表示する場合は、スライドマスターに追加できます。
Spire.Presentation が提供する IMasterSlide.Shapes.AppendEmbedImage() メソッドは、スライド マスターに画像の追加をサポートします。詳細な手順は次のとおりです。
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
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するには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の最新バージョンが含まれています。
カテゴリー | 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」をスローする問題が修正されました。 |
カテゴリー | 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に変換した後の日付フォーマットが正しくない問題が修正されました。 |
カテゴリー | 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 | 組み合わせをキャンセルすると形状の向きが変更される問題を修正しました。 |
カテゴリー | 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」をスローする問題が修正されました。 |
スピーチの内容が非常に抽象的な場合、言葉だけでメッセージを聴衆に明確に伝えるのは難しい場合があります。 PowerPoint プレゼンテーションに画像を追加すると、意見をより明確に伝え、聴衆との間の誤解を最小限に抑えることができます。 必要に応じて、PowerPoint から既存の画像を抽出することもできます。この記事では、Spire.Presentation for Java を使用して PowerPoint に画像を追加または抽出する方法を紹介します。
まず、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>
Spire.Presentation が提供する ISlide.getShapes().appendEmbedImage() メソッドは、特定のスライドに画像の追加をサポートします。詳細な手順は次のとおりです。
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);
}
}
スライド マスターは、スライドのテーマ、レイアウト、背景、色、フォントなどの情報を制御できる一番上のスライドです。 スライド マスターの情報は他のスライドにも影響します。 つまり、スライド マスターの情報を変更すると、後で追加されたスライドを含め、他のスライドもそれに応じて変更されます。 画像をすべてのスライドに表示する場合は、スライドマスターに追加できます。
Spire.Presentationが提供する IMasterSlide.getShapes().appendEmbedImage() メソッドは、スライド マスターに画像の追加をサポートします。詳細な手順は次のとおりです。
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);
}
}
特定のスライドから画像を抽出するには、スライドのすべての図形をループします。SlidePicture または PictureShape タイプの図形をを検索し、SlidePicture.getPictureFill().getPicture().getEmbedImage().getImage() または PictureShape.getEmbedImage().getImage() メソッドを使用して画像を取得します。詳細な手順は次のとおりです。
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)));
}
}
}
}
PowerPoint からすべての画像を抽出するには、Presentation.getImages() メソッドを使用してドキュメントの画像コレクションを取得します。その画像コレクションをループし、ImageCollection.get(int).getImage() メソッドを使用して画像を取得します。詳細な手順は次のとおりです。
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)));
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
場合によっては、Word ドキュメント内の画像を別の画像やテキストに置き換えたい場合があります。たとえば、履歴書を作成する場合、テンプレートの元にある画像を自分の写真に置き換える必要があります。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word の画像を置き換える方法を示します。
まず、Spire.Doc for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.Doc
Word 内の画像を別の画像に置き換えるには、ドキュメントの要素をループします。画像を検索してリストに追加します。次に、置換する画像をリストから取得し、DocPicture.LoadImage() メソッドを使用して別の画像に置換します。詳細な手順は次のとおりです。
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
Spire.Doc は画像をテキストに直接置き換える方法を提供していない。しかし、この機能は、画像の位置にテキストを挿入し、ドキュメントから画像を削除することで実現できます。次の手順では、Word 内のすべての画像をテキストに置換き換える方法を示します。
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
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Excel のワークシートを印刷すると、書式やレイアウトが完璧に整っているワークシートが、印刷後に非常に乱雑な状態になることがあります。これは、エクセルのワークシートはパソコンで内容を見たり編集したりしやすいように設計されており、直接印刷すると画面上の表示と大きく異なることがあるためです。したがって、ワークシートをそのままの書式とレイアウトで印刷するためには、印刷時に印刷オプションを設定する必要があります。この記事では、Spire.XLS for Java を使って Excel ファイルを印刷する方法と、印刷の設定について説明します。
まず、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 のページ設定には、コメントを印刷するかどうか、グリッドラインを印刷するかどうか、1つのページにワークシートをレイアウトするかどうかなど、ワークシートの印刷方法を制御するオプションが用意されています。
XLS for Java では、これらの印刷オプションを設定するための PageSetup クラスが用意されています。 以下は、PageSetup クラスのメソッドを使って、Spire.XLS for Java で Excel の印刷オプションを設定する方法の説明です。
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();
}
}
}
印刷オプションの設定だけでなく、印刷時にネットワーク上のプリンターを指定する方法や、プリンターの設定方法についても知っておくことが重要です。 次のステップは、Spire.XLS for Java の PrinterJob クラスのメソッドを使用して、プリンタを設定し、Excel ファイルを印刷する方法を示しています。
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