チュートリアル
簡単にライブラリーを使用するためのチュートリアルコレクション
テキストや画像に比べ、動画は人を惹きつける魅力があります。プレゼンテーションに動画を含めることで、聴衆の注目を集めやすくなり、複雑な概念を効率的かつ分かりやすく説明できるだけでなく、プレゼンテーションをよりダイナミックでクリエイティブに見せることができます。この記事では、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 に変換した後にテキスト コンテンツのスタイルが変更される問題を修正しました。 |
CSV(Comma-Separated Values)ファイルは、基本的にはテキストファイルであり、テーブルデータをプレーンな形式で保存します。CSV ファイルでは、データをコンマで区切り、改行で行またはレコードを区切ります。これらは、メモ帳などのテキストファイルを処理できるほとんどのプログラムで簡単に編集することができます。CSV ファイルを PDF に変換することで、閲覧者が編集することを防ぐことができます。この記事では、Spire.XLS for Java を使用して Java で CSV を PDF に変換する方法について説明します。
まず、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.7.4</version>
</dependency>
</dependencies>
以下は CSV ファイルを PDF に変換する手順です:
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ConvertCsvToPdf {
public static void main(String []args) {
// Workbookクラスのオブジェクトを作成します
Workbook wb = new Workbook();
// CSVファイルをロードします
wb.loadFromFile("サンプル.csv", ",");
// SheetFitToPageプロパティをtrueに設定して、ワークシートが1つのPDFページに変換されるようにします
wb.getConverterSetting().setSheetFitToPage(true);
// 最初のワークシートを取得します
Worksheet sheet = wb.getWorksheets().get(0);
// ワークシート内の列をループします
for (int i = 1; i < sheet.getColumns().length; i++)
{
// 列の幅を自動調整します
sheet.autoFitColumn(i);
}
// ワークシートをPDF形式で保存します
sheet.saveToPdf("output/CSVからPDFへの変換.pdf");
}
}
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。