チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
Excel の文書プロパティは、ワークブックに関する追加情報を提供する重要なメタデータです。複数のワークブックを管理しており、作者、タイトルなどの情報を追跡したい場合に、これらの文書プロパティを読み取ることで迅速に情報を集めることができます。また、特定の状況では、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>14.2.4</version>
</dependency>
</dependencies>
標準的な文書プロパティは、Excel ファイル内に既に用意されているプロパティです。これらのプロパティには、作成者、タイトル、サブタイトル、キーワーなど、ファイルに関する詳細な情報が含まれます。Excel のカスタム文書プロパティは、ユーザーが特定の要件に基じて定義できるものです。カスタム文書プロパティの値は、テキスト、日時、数値、あるいは単純に「はい」か「いいえ」という形式で割り当てることができます。
次の手順は、Spire.XLS for Java を使用して Excel ファイルの標準的な文書プロパティとカスタム文書プロパティを読み取る方法を示しています。
import com.spire.xls.Workbook;
import com.spire.xls.collections.BuiltInDocumentProperties;
import com.spire.xls.core.ICustomDocumentProperties;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class ReadStandardDocumentProperties {
public static void main(String[] args) throws IOException {
//Workbook クラスのインスタンスを初期化する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("Sample.xlsx");
//StringBuilder クラスのインスタンスを初期化する
StringBuilder sb = new StringBuilder();
//すべての標準の文書プロパティのコレクションを取得する
BuiltInDocumentProperties standardProperties = workbook.getDocumentProperties();
//特定の標準の文書プロパティを取得する
String title = standardProperties.getTitle();
String subject = standardProperties.getSubject();
String author = standardProperties.getAuthor();
String keywords = standardProperties.getKeywords();
String manager = standardProperties.getManager();
String company = standardProperties.getCompany();
String category = standardProperties.getCategory();
String comments = standardProperties.getComments();
//標準の文書プロパティを StringBuilder インスタンスに追加する
sb.append("標準の文書プロパティ:"
+"\r\nタイトル: " + title
+ "\r\nサブタイトル: " + subject
+ "\r\n作成者: " + author
+ "\r\nキーワード: "+ keywords
+ "\r\n管理者: " + manager.toString()
+ "\r\n会社名: " + company.toString()
+ "\r\n分類: " + category.toString()
+ "\r\nコメント: " + comments.toString()
);
sb.append("\r\n\nカスタムの文書プロパティ:");
//すべてのカスタムの文書 プロパティのコレクションを取得する
ICustomDocumentProperties customProperties = workbook.getCustomDocumentProperties();
//コレクションをループする
for(int i =0; i < customProperties.getCount(); i++)
{
//各カスタムの文書プロパティの名前と値を StringBuilder インスタンスに追加する
sb.append("\r\n" + customProperties.get(i).getName() + ": " + customProperties.get(i).getValue());
}
//StringBuilder の内容をテキスト ファイルに書き込む
String output = "ReadDocumentProperties.txt";
FileWriter fw = new FileWriter(output, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(sb);
bw.close();
fw.close();
workbook.dispose();
}
}
標準の文書プロパティの値を空に設定することで、Excel ファイルから標準の文書 プロパティを簡単に削除できます。カスタム 文書プロパティの場合は、ICustomDocumentProperties.remove() メソッドを使用して削除できます。
次の手順は、Spire.XLS for Java を使用して Excel ファイルから標準の文書プロパティとカスタムの文書プロパティを削除する方法を示しています。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.collections.BuiltInDocumentProperties;
import com.spire.xls.core.ICustomDocumentProperties;
public class DeleteDocumentProperties {
public static void main(String[] args) {
//Workbook クラスのインスタンスを初期化する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("Sample.xlsx");
//すべての標準の文書プロパティのコレクションを取得する
BuiltInDocumentProperties standardProperties = workbook.getDocumentProperties();
//各標準な文書プロパティの値を空に設定する
standardProperties.setTitle("");
standardProperties.setSubject("");
standardProperties.setAuthor("");
standardProperties.setManager("");
standardProperties.setCompany("");
standardProperties.setCategory("");
standardProperties.setKeywords("");
standardProperties.setComments("");
//すべてのカスタム の文書プロパティのコレクションを取得する
ICustomDocumentProperties customProperties = workbook.getCustomDocumentProperties();
//コレクションをループする
for(int i = customProperties.getCount() - 1; i >= 0; i--)
{
//名前でコレクションから各カスタムの文書プロパティを削除する
customProperties.remove(customProperties.get(i).getName());
}
//結果ファイルを保存する
workbook.saveToFile("DeleteDocumentProperties.xlsx", ExcelVersion.Version2016);
workbook.dispose();
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
テキストや画像に比べ、動画は人を惹きつける魅力があります。プレゼンテーションに動画を含めることで、聴衆の注目を集めやすくなり、複雑な概念を効率的かつ分かりやすく説明できるだけでなく、プレゼンテーションをよりダイナミックでクリエイティブに見せることができます。この記事では、Spire.Presentation for Java を使用して、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>9.2.8</version>
</dependency>
</dependencies>
プレゼンテーションにビデオを挿入することにより、プレゼンテーション中にコンピュータ上でそれを探すことなく、瞬時にあなたの聴衆とビデオを共有することができます。次の手順では、PowerPoint プレゼンテーションに動画を挿入する方法を説明します:
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class InsertVideoPresentation {
public static void main(String []args) throws Exception {
// Presentationのインスタンスを作成する
Presentation presentation = new Presentation();
// PowerPoint文書を読み込む
presentation.loadFromFile("サンプル.pptx");
// スライドを取得する
ISlide slide = presentation.getSlides().get(1);
// 説明テキストを追加する
Rectangle2D.Double rec_title = new Rectangle2D.Double(50, 280, 160, 50);
IAutoShape shape_title = slide.getShapes().appendShape(ShapeType.RECTANGLE, rec_title);
shape_title.getLine().setFillType(FillFormatType.NONE);
shape_title.getFill().setFillType(FillFormatType.NONE);
ParagraphEx para_title = new ParagraphEx();
para_title.setText("オーシャン");
para_title.setAlignment(TextAlignmentType.CENTER);
para_title.getTextRanges().get(0).setLatinFont(new TextFont("HarmonyOS Sans SC"));
para_title.getTextRanges().get(0).setFontHeight(28);
para_title.getTextRanges().get(0).isBold(TriState.TRUE);
para_title.getTextRanges().get(0).getFill().setFillType(FillFormatType.SOLID);
para_title.getTextRanges().get(0).getFill().getSolidColor().setColor(Color.BLACK);
shape_title.getTextFrame().getParagraphs().append(para_title);
// 最初のスライドにビデオを追加する
Rectangle2D.Double videoRect = new Rectangle2D.Double(presentation.getSlideSize().getSize().getWidth() / 2 - 125, 300, 240, 130);
IVideo video = slide.getShapes().appendVideoMedia("Ocean1.mp4", videoRect);
// ビデオのサムネイル画像を設定する
video.getPictureFill().getPicture().setUrl("https://i.postimg.cc/90L2HjGP/2024-03-01-151539.png");
// 結果の文書を保存する
presentation.saveToFile("ビデオの挿入.pptx", FileFormat.PPTX_2013);
presentation.dispose();
}
}
あなたは、既存のビデオはよくあなたの文をサポートすることができないと思われる場合は、別の適切なものと置き換えることができます。次の手順では、PowerPoint プレゼンテーションで既存の動画を別の動画に置き換える方法を示します:
import com.spire.presentation.*;
import java.io.File;
import java.io.FileInputStream;
public class ReplaceVideo {
public static void main(String []args) throws Exception {
// プレゼンテーションのインスタンスを作成します
Presentation ppt = new Presentation();
// PowerPoint ドキュメントを読み込みます
ppt.loadFromFile("ビデオの挿入.pptx");
// 最初のスライドを取得します
ISlide iSlide = ppt.getSlides().get(1);
// ビデオをバイト配列に読み込みます
File file = new File("Ocean2.mp4");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] data = new byte[(int) file.length()];
fileInputStream.read(data);
// ドキュメントのビデオコレクションに読み込まれたビデオを追加します
VideoData videoData = ppt.getVideos().append(data);
// 最初のスライド上のすべての図形をループします
for (Object shape : iSlide.getShapes()) {
// 現在の図形が IVIdeo 型であるかどうかをチェックします
if (shape instanceof IVideo) {
IVideo video = (IVideo) shape;
// 読み込まれたビデオで元のビデオを置き換えます
video.setEmbeddedVideoData(videoData);
// ビデオのサムネイル画像を変更します
video.getPictureFill().getPicture().setUrl("https://i.postimg.cc/vZWYqC4B/2024-03-01-153019.png");
}
}
// 結果のドキュメントを保存します
ppt.saveToFile("ビデオの置き換え.pptx", FileFormat.PPTX_2013);
}
}
あなたは、PowerPoint プレゼンテーション内のビデオが好きで、他の場所でそれらを使用したい場合は、抽出し、ディスクに保存することができます。以下の手順では、PowerPoint プレゼンテーションから動画を抽出する方法を説明します:
import com.spire.presentation.*;
public class ExtractVideo {
public static void main(String []args) throws Exception {
// プレゼンテーションのインスタンスを作成します
Presentation presentation = new Presentation();
// PowerPoint ドキュメントを読み込みます
presentation.loadFromFile("ビデオの置き換え.pptx");
int i = 0;
// 出力ファイルパスを指定します
String videoPath = String.format("output/Videos/Video{0}.mp4", i);
// ドキュメント内のすべてのスライドをループします
for (Object slideObj : presentation.getSlides()) {
ISlide slide = (ISlide) slideObj;
// 各スライド上のすべての図形をループします
for (Object shapeObj : slide.getShapes()) {
IShape shape = (IShape) shapeObj;
// 図形が IVideo 型であるかどうかをチェックします
if (shape instanceof IVideo) {
// ビデオを指定されたパスに保存します
((IVideo) shape).getEmbeddedVideoData().saveToFile(videoPath);
i++;
}
}
}
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Spire.Office for Java 9.2.0を発表できることをうれしく思います。このバージョンでは、Spire.XLS for Java は、Kingdraw で描画された OLEオブジェクトを画像として保存するためのサポートを追加し、Spire.Barcode for Java は、QR コードの途中に画像を追加することをサポートします。さらに、多くの既知のバグも修正されました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
New feature | SPIREXLS-5046 | Kingdraw で描画された OLE オブジェクトを画像として保存することがサポートしています。
com.spire.xls.Workbook workbook = new com.spire.xls.Workbook(); workbook.loadFromFile("data.xlsx"); Worksheet sheet = workbook.getWorksheets().get(0); Object o = sheet.getCellRange("C2").getFormulaValue(); if (sheet.hasOleObjects()) { for (int i = 0; i < sheet.getOleObjects().size(); i++) { IOleObject oleObject = sheet.getOleObjects().get(i); OleObjectType oleObjectType = sheet.getOleObjects().get(i).getObjectType(); byte[] picUrl = null; switch (oleObjectType) { case Emf: picUrl = oleObject.getOleData();; break; } if (picUrl != null) { byteArrayToFile(picUrl, "out.png"); break; } } } } public static void byteArrayToFile(byte[] datas, String destPath) { File dest = new File(destPath); try (InputStream is = new ByteArrayInputStream(datas); OutputStream os = new BufferedOutputStream(new FileOutputStream(dest, false));) { byte[] flush = new byte[1024]; int len = -1; while ((len = is.read(flush)) != -1) { os.write(flush, 0, len); } os.flush(); } catch (IOException e) { e.printStackTrace(); } } |
Bug | SPIREXLS-5072 SPIREXLS-5099 |
Excel を PDF に変換した後にコンテンツが正しくなくなる問題を修正しました。 |
Bug | SPIREXLS-5076 | コンテンツをコピーした後に画像が正しくなくなる問題を修正しました。 |
Bug | SPIREXLS-5088 | XML を Excel に変換するときに、プログラムが「A workbook must contain at least a visible worksheet」をスローする問題を修正しました。 |
Bug | SPIREXLS-5089 | setValue メソッドの Locale 設定を最適化しました。 |
Bug | SPIREXLS-5095 | テーブルをコピーするときにプログラムが「NullPointerException」をスローする問題を修正しました。 |
Bug | SPIREXLS-5098 | Excel を HTML に変換した後にテキスト コンテンツのスタイルが変更される問題を修正しました。 |
カテゴリー | ID | 説明 |
Bug | SPIREDOC-9689 | Wordを PDF に変換するときに余分な赤い縦線が表示される問題を修正しました。 |
Bug | SPIREDOC-9911 | RTF を PDF に変換するときにテキストが失われる問題を修正しました。 |
Bug | SPIREDOC-10009 | マルチスレッド環境で同じ Word 文書を PDF 文書に複数回変換すると、プログラムが java.lang.NullPointerException をスローする問題を修正しました。 |
Bug | SPIREDOC-10018 | Word を PDF に変換するときにコンテンツが正しくない問題を修正しました。 |
Bug | SPIREDOC-10031 | マルチスレッド環境で同じ Word 文書を複数回 PDF に変換すると、PDF ファイルのサイズが不一致になる問題を修正しました。 |
Bug | SPIREDOC-10130 | Word を PDF に変換するときに、ヘッダーの数字が正しく表示されない問題を修正しました。 |
Bug | SPIREDOC-10216 | 更新されたディレクトリの内容が正しくない問題を修正しました。 |
Bug | SPIREDOC-10236 | Word を PDF に変換するときにプログラムが java.lang.NullPointerException をスローする問題を修正しました。 |
Bug | SPIREDOC-10238 | DocをDocxに変換する際に文字化けが発生する問題を修正しました。 |
Bug | SPIREDOC-10258 | マルチスレッド環境でフォルダーに複数のファイルをロードするときにプログラムが複数の例外をスローする問題を修正しました。 |
Bug | SPIREDOC-10274 | Word を PDF に変換するときに余分なスラッシュが発生する問題を修正しました。 |
Bug | SPIREDOC-10276 | ヘッダーと前のセクションのリンクを解除した後、ヘッダーのコンテンツが繰り返し表示される問題を修正しました。 |
カテゴリー | ID | 説明 |
Bug | SPIREPDF-6523 | 最初のページのテンプレートを作成するときにプログラムが「 java.lang.NullPointerException 」をスローする問題を修正しました。 |
Bug | SPIREPDF-6527 | PDF ドキュメントの圧縮が機能しない問題を修正しました。 |
Bug | SPIREPDF-6534 | ドキュメントを比較するときにプログラムが 「java.lang.NullPointerException 」をスローする問題を修正しました。 |
Bug | SPIREPDF-6535 | デジタル署名を追加すると内容が文字化けする問題を修正しました。 |
Bug | SPIREPDF-6542 | 追加される添付ファイルの MIME タイプが正しくない問題を修正しました。 |
Bug | SPIREPDF-6543 | 署名の検証で誤った結果が得られる問題を修正しました。 |
カテゴリー | ID | 説明 |
Bug | SPIREPPT-2440 | PPT ドキュメントをロードするときにプログラムが「NullPointerException」エラーをスローする問題を修正しました。 |
カテゴリー | ID | 説明 |
New feature | - | ライセンスの適用方法をcom.spire.barcode.license.LicenseProvider.setLicenseKey(key)に変更しました。 |
New feature | SPIREBARCODE-244 | QRコードの真ん中に画像を追加することをサポートしています。
BarcodeSettings barCodeSetting = new BarcodeSettings(); BufferedImage image = ImageIO.read(new File("Image/1.png")); barCodeSetting.setQRCodeLogoImage(image); |
Bug | SPIREBARCODE-243 | 垂直バーコードの認識が失敗する問題を修正しました。 |
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>14.2.4</version>
</dependency>
</dependencies>
Spire.XLS for Java を使用すると、ワークシートに水平および垂直の改ページを追加できます。そのための手順は次のとおりです。
import com.spire.xls.*;
public class AddPageBreaks {
public static void main(String []args) {
//Workbookインスタンスを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("Sample.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//改ページを追加するセルを指定する
CellRange cell1 = sheet.getRange().get("A10");
CellRange cell2 = sheet.getRange().get("F1");
//水平方向の改ページを追加する
sheet.getHPageBreaks().add(cell1);
//垂直方向の改ページを追加する
sheet.getVPageBreaks().add(cell2);
//改ページを表示するには、ビューモードを「ViewMode.Preview」に設定する
sheet.setViewMode(ViewMode.Preview);
//結果ファイルを保存する
workbook.saveToFile("AddPageBreaks.xlsx", ExcelVersion.Version2013);
}
}
Spire.XLS for Java は、インデックスによる指定された改ページの削除をサポートする Worksheet.getHPageBreaks().removeAt() と Worksheet.getHPageBreaks().removeAt() メソッドを提供します。 詳細な手順は次のとおりです。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class DeleteASpecificPageBreak {
public static void main(String []args) {
//Workbookインスタンスを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("AddPageBreaks.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//最初の水平方向の改ページを削除する
sheet.getHPageBreaks().removeAt(0);
//最初の垂直方向の改ページを削除する
//sheet.getVPageBreaks().removeAt(0);
//結果ファイルを保存する
workbook.saveToFile("DeleteASpecificPageBreaks.xlsx", ExcelVersion.Version2013);
}
}
すべての改ページを削除する場合は、Worksheet.getHPageBreaks().clear() および Worksheet.getVPageBreaks().clear() メソッド を使用してください。 以下に詳細な手順を示します。
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class DeleteAllPageBreaks {
public static void main(String []args) {
//Workbookインスタンスを作成する
Workbook workbook = new Workbook();
//Excelファイルを読み込む
workbook.loadFromFile("AddPageBreaks.xlsx");
//最初のワークシートを取得する
Worksheet sheet = workbook.getWorksheets().get(0);
//すべての水平方向の改ページを削除する
sheet.getHPageBreaks().clear();
//すべての垂直方向の改ページを削除する
sheet.getVPageBreaks().clear();
//結果ファイルを保存する
workbook.saveToFile("DeleteAllPageBreaks.xlsx", ExcelVersion.Version2013);
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Spire.Presentation for Java 9.2.8を発表できることをうれしく思います。このバージョンでは、PPT ドキュメントのロード時にプログラムが「NullPointerException」エラーをスローする問題が修正されています。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
Bug | SPIREPPT-2440 | PPT ドキュメントをロードするときにプログラムが「NullPointerException」エラーをスローする問題を修正しました。 |
Spire.Doc 12.2.10のリリースをお知らせいたします。このバージョンでは、Word ドキュメント内の GIF 形式のコンテンツの解析がサポートされています。 また、取得した箇条書きが正しくない問題など、既知の問題が修正されました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
New feature | SPIREDOC-10052 | Word ドキュメント内の GIF 形式のコンテンツの解析がサポートされています。 |
Bug | SPIREDOC-10154 | 取得した箇条書きが正しくない問題を修正しました。 |
Bug | SPIREDOC-10160 | メールマージ後にGIF形式がPNG形式に変換される問題を修正した。 |
Bug | SPIREDOC-10233 | Word文書をPDF文書に変換した後、プライベートフォントの埋め込みに失敗する問題を修復しました。 |
Bug | SPIREDOC-10234 | WordからPDFへの変換時に文字が正しくなかった問題を修正しました。 |
Bug | SPIREDOC-10235 | MACシステムでWord文書をPDF文書に変換した後、フォントの読み込みに失敗する問題を修正しました。 |
Bug | SPIREDOC-10261 | Docx文書を読み込むとSystem.NullReferenceExceptionがスローされる問題を修正しました。 |
Bug | SPIREDOC-10295 | Docx文書を読み込み、新しい文書として保存した後、表に余分な境界線ができる問題を修復しました。 |
Bug | SPIREDOC-10305 | 2つのWord文書を比較すると、プログラムがSystem.ArgumentExceptionをスローする問題を修正しました。 |
Bug | SPIREDOC-10308 | ページ数の取得時にプログラムがハングする問題を修復しました。 |
Bug | SPIREDOC-10318 | 2つのWord文書を比較すると、InvalidCastExceptionをスローする問題を修正しました。 |
場合によっては、PowerPoint ドキュメントを保護する必要があるかもしれません。 たとえば、権限のないユーザーが PowerPoint ドキュメントを表示および編集できないようにしたい場合です。 逆に、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>9.2.2</version>
</dependency>
</dependencies>
PowerPoint をパスワードで保護すると、正しいパスワードを持つユーザーだけがドキュメントを表示および編集できるようになります。 以下に詳細な手順を示します。
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
public class ProtectPPTWithPassword {
public static void main(String []args) throws Exception {
//Presentationインスタンスを作成する
Presentation presentation = new Presentation();
//PowerPoint ドキュメントをロードする
presentation.loadFromFile("Sample.pptx");
//ドキュメントをパスワードで暗号化する
presentation.encrypt("your password");
//結果ドキュメントを保存する
presentation.saveToFile("Encrypted.pptx", FileFormat.PPTX_2013);
}
}
PowerPoint ドキュメントを最終版としてマークすると、ドキュメントが最終バージョンであり、それ以上編集する必要がないことを読者に知らせることができます。以下に詳細な手順を示します。
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
public class MarkPPTAsFinal {
public static void main(String []args) throws Exception {
//Presentationインスタンスを作成する
Presentation ppt = new Presentation();
//PowerPoint ドキュメントをロードする
ppt.loadFromFile("Sample.pptx");
//ドキュメントを最終版としてマークする
ppt.getDocumentProperty().set("_MarkAsFinal", true);
//結果ドキュメントを保存する
ppt.saveToFile("MarkAsFinal.pptx", FileFormat.PPTX_2013);
}
}
文書の保護が不要になった場合は、パスワードを削除して保護を解除することもできます。以下に詳細な手順を示します。
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
public class RemovePasswordProtectionFromPPT {
public static void main(String []args) throws Exception {
//Presentationインスタンスを作成する
Presentation presentation = new Presentation();
//パスワードで保護された PowerPoint ドキュメントをロードする
presentation.loadFromFile("Encrypted.pptx", "your password");
//ドキュメントからパスワード保護を削除する
presentation.removeEncryption();
//結果ドキュメントを保存する
presentation.saveToFile("RemoveProtection.pptx", FileFormat.PPTX_2013);
}
}
「最終版にする」機能は、PowerPoint ドキュメントを読み取り専用にして、それ以上の変更を防止します。 ドキュメントを再度変更したい場合は、ドキュメントから「最終版にする」機能を削除できます。以下に詳細な手順を示します。
import com.spire.presentation.FileFormat;
import com.spire.presentation.Presentation;
public class RemoveMarkAsFinalFromPPT {
public static void main(String []args) throws Exception {
//Presentationインスタンスを作成する
Presentation ppt = new Presentation();
//PowerPoint ドキュメントをロードする
ppt.loadFromFile( "MarkAsFinal.pptx");
//ドキュメントから「最終版にする」機能を削除する
ppt.getDocumentProperty().set("_MarkAsFinal", false);
//結果ドキュメントを保存する
ppt.saveToFile("RemoveMarkAsFinal.pptx", FileFormat.PPTX_2013);
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
Spire.PDF for Java 10.2.6を発表できることをうれしく思います。このバージョンでは、 署名の検証で誤った結果が得られる問題など、いくつかの既知の問題が修正されました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
Bug | SPIREPDF-6523 | 最初のページのテンプレートを作成するときにプログラムが「 java.lang.NullPointerException 」をスローする問題を修正しました。 |
Bug | SPIREPDF-6527 | PDF ドキュメントの圧縮が機能しない問題を修正しました。 |
Bug | SPIREPDF-6534 | ドキュメントを比較するときにプログラムが 「java.lang.NullPointerException 」をスローする問題を修正しました。 |
Bug | SPIREPDF-6535 | デジタル署名を追加すると内容が文字化けする問題を修正しました。 |
Bug | SPIREPDF-6542 | 追加される添付ファイルの MIME タイプが正しくない問題を修正しました。 |
Bug | SPIREPDF-6543 | 署名の検証で誤った結果が得られる問題を修正しました。 |
Spire.Doc for C++ 12.2.1を発表できることを嬉しく思います。このバージョンでは、固定レイアウトによるページ コンテンツの取得がサポートされています。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
New feature | - | 固定レイアウトによるページ コンテンツの取得がサポートされています。
//ファイルパスを指定する wstring input_path = DATAPATH; wstring inputFile = input_path + L"in.docx"; wstring output_path = OUTPUTPATH; wstring outputFile = output_path + L"out.txt"; //Document の新しいインスタンスを作成する intrusive_ptr<Document> document = new Document(); //指定されたファイルからドキュメントを読み込む document->LoadFromFile(inputFile.c_str(), FileFormat::Docx); intrusive_ptr<FixedLayoutDocument> layoutDoc = new FixedLayoutDocument(document); wstring result; //ロードされたドキュメントを使用してFixedLayoutDocumentオブジェクトを作成する intrusive_ptr<FixedLayoutLine> line = layoutDoc->GetPages()->GetItem(0)->GetColumns()->GetItem(0)->GetLines()->GetItem(0); result.append(L"Line: "); result.append(line->GetText()); result.append(L"\n"); //その行に関連付けられた元の段落を取得する intrusive_ptr<Paragraph> para = line->GetParagraph(); result.append(L"Paragraph text: "); result.append(para->GetText()); result.append(L"\n"); //最初のページに表示されるすべてのテキストをプレーン テキスト形式で取得する(ヘッダーとフッターを含む) wstring pageText = layoutDoc->GetPages()->GetItem(0)->GetText(); result.append(pageText); result.append(L"\n"); //ドキュメントの各ページをループし、各ページに表示される行数を出力する for (int i = 0; i < layoutDoc->GetPages()->GetCount(); i++) { intrusive_ptr<FixedLayoutPage> page = layoutDoc->GetPages()->GetItem(i); intrusive_ptr<LayoutCollection> lines = page->GetChildEntities(LayoutElementType::Line, true); result.append(L"Page "); result.append(std::to_wstring(page->GetPageIndex())); result.append(L" has "); result.append(std::to_wstring(lines->GetCount())); result.append(L" lines."); result.append(L"\n"); } //最初の段落のレイアウト エンティティの逆引き参照を実行する result.append(L"\n"); result.append(L"The lines of the first paragraph:"); result.append(L"\n"); intrusive_ptr<Paragraph> para2 = (Object::Dynamic_cast<Section>(document->GetFirstChild()))->GetBody()->GetParagraphs()->GetItemInParagraphCollection(0); intrusive_ptr<LayoutCollection> paragraphLines = layoutDoc->GetLayoutEntitiesOfNode(para2); for (int i = 0; i < paragraphLines->GetCount(); i++) { intrusive_ptr<FixedLayoutLine> paragraphLine = Object::Dynamic_cast<FixedLayoutLine>(paragraphLines->GetItem(i)); result.append(paragraphLine->GetText()); result.append(L"\n"); result.append(paragraphLine->GetRectangle()->ToString()); result.append(L"\n"); result.append(L"\n"); } //抽出したテキストをファイルに書き込む std::wofstream write(outputFile); auto LocUtf8 = locale(locale(""), new std::codecvt_utf8<wchar_t>); write.imbue(LocUtf8); write << result; write.close(); //ドキュメントリソースを破棄する document->Dispose(); |
Spire.XLS for Java 14.2.4のリリースをお知らせいたします。このバージョンでは、Kingdraw によって描画された OLE オブジェクトを画像として保存するためのサポートが追加されています。 さらに、Excel を PDF に変換すると内容が正しくなくなる問題など、既知の問題も修正されました。詳細は以下の内容を読んでください。
カテゴリー | ID | 説明 |
New feature | SPIREXLS-5046 | Kingdraw で描画された OLE オブジェクトを画像として保存することがサポートしています。
com.spire.xls.Workbook workbook = new com.spire.xls.Workbook(); workbook.loadFromFile("data.xlsx"); Worksheet sheet = workbook.getWorksheets().get(0); Object o = sheet.getCellRange("C2").getFormulaValue(); if (sheet.hasOleObjects()) { for (int i = 0; i < sheet.getOleObjects().size(); i++) { IOleObject oleObject = sheet.getOleObjects().get(i); OleObjectType oleObjectType = sheet.getOleObjects().get(i).getObjectType(); byte[] picUrl = null; switch (oleObjectType) { case Emf: picUrl = oleObject.getOleData();; break; } if (picUrl != null) { byteArrayToFile(picUrl, "out.png"); break; } } } } public static void byteArrayToFile(byte[] datas, String destPath) { File dest = new File(destPath); try (InputStream is = new ByteArrayInputStream(datas); OutputStream os = new BufferedOutputStream(new FileOutputStream(dest, false));) { byte[] flush = new byte[1024]; int len = -1; while ((len = is.read(flush)) != -1) { os.write(flush, 0, len); } os.flush(); } catch (IOException e) { e.printStackTrace(); } } |
Bug | SPIREXLS-5072 SPIREXLS-5099 |
Excel を PDF に変換した後にコンテンツが正しくなくなる問題を修正しました。 |
Bug | SPIREXLS-5076 | コンテンツをコピーした後に画像が正しくなくなる問題を修正しました。 |
Bug | SPIREXLS-5088 | XML を Excel に変換するときに、プログラムが「A workbook must contain at least a visible worksheet」をスローする問題を修正しました。 |
Bug | SPIREXLS-5089 | setValue メソッドの Locale 設定を最適化しました。 |
Bug | SPIREXLS-5095 | テーブルをコピーするときにプログラムが「NullPointerException」をスローする問題を修正しました。 |
Bug | SPIREXLS-5098 | Excel を HTML に変換した後にテキスト コンテンツのスタイルが変更される問題を修正しました。 |