Spire.Office for Java

ニュース&リリース

2024-01-16

Spire.Office for Java 9.1.4 がリリースされました

Spire.Office for Java 9.1.4を発表できることをうれしく思います。このリリースでは、このバージョンでは、Spire.PDF for Java により透かし描画の効率が向上し、Spire.Doc for Java により画像透かしを追加する新しい方法が追加され、Spire.Presentation for Java により PowerPoint から SVG 形式への変換速度が向上しました。さらに、多くの既知のバグも修正されました。詳細は以下の内容を読んでください。

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

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

Spire.PDF for Java

カテゴリー ID 説明
New feature SPIREPDF-6454 透かしの描画効率も向上されました。
New feature SPIREPDF-6459 テキストを置換する機能を実現するための PdfTextReplacer インターフェースが追加されました。
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("sample.pdf");
PdfPageBase page = pdf.getPages().get(0);
PdfTextReplacer replacer = new PdfTextReplacer(page);
PdfTextReplaceOptions options= new PdfTextReplaceOptions();
options.setReplaceType(EnumSet.of(ReplaceActionType.WholeWord));
replacer.replaceText("www.google.com", "1234567");
pdf.saveToFile(outputFile);
New feature - 画像の削除、画像の抽出、画像の置換、画像の圧縮の機能を実現する PdfImageHelper インターフェイスが追加されました。

キーコードスニペット:
PdfImageHelper imageHelper = new PdfImageHelper();
PdfImageInfo[] imageInfoCollection= imageHelper.getImagesInfo(page);
Delete image: 
imageHelper.deleteImage(imageInfoCollection[0]);
Extract image:
    int index = 0;
    for (com.spire.pdf.utilities.PdfImageInfo img : imageInfoCollection) {
        BufferedImage image = img.getImage();
        File output = new File(outputFile_Img + String.format("img_%d.png", index));
        ImageIO.write(image, "PNG", output);
        index++;
    }

画像を置き換えます:
PdfImage image = PdfImage.fromFile("ImgFiles/E-iceblue logo.png");
imageHelper.replaceImage(imageInfoCollection[i], image);
Compress image:
for (PdfPageBase page : (Iterable)doc.getPages())
        {
            if (page != null)
            {
                if (imageHelper.getImagesInfo(page) != null)
                {
                    for (com.spire.pdf.utilities.PdfImageInfo info : imageHelper.getImagesInfo(page))
                    {
                        info.tryCompressImage();
                    }
                }
            }
        }
Bug SPIREPDF-6468 文書を保存するときにプログラムが 「java.lang.StringIndexOutOfBoundsException 」をスローする問題が修正されました。
Bug SPIREPDF-6484 複数のPDF文書に対して一括でテキストの置換を行い、保存した後に結果の文書が生成されない問題を修正しました。

Spire.XLS for Java

カテゴリー ID 説明
Bug SPIREXLS-5020 WPS ツールで印刷およびプレビューすると、保存された XLSX ドキュメントの余白が正しくないという問題が修正されました。
Bug SPIREXLS-5037 塗りつぶし色のないセルで取得された塗りつぶし色の値が (0,0,0) になる問題が修正されました。
Bug SPIREXLS-5047 HTML を XLSX に変換するときにセルの境界線スタイルが失われる問題が修正されました。

Spire.Doc for Java

カテゴリー ID 説明
Adjustment - Spire.Pdf.jar への依存関係を削除しました。
Adjustment - ライセンスの適用方法を 「com.spire.doc.license.LicenseProvider.setLicenseKey(key) 」に変更しました。
Adjustment - 名前空間 com.spire.ms.Printing.* が com.spire.doc.printing.* に変更されました。
New feature - 次のメソッド、クラス、およびインターフェイスは非推奨になりました。
The "newEngine" parameter in the Document constructor no longer has any effect. The internal mechanism now defaults to using the new engine.
The HeaderType enum.
The GroupedShapeCollection class.
The ShapeObjectTextCollection class.
The MailMergeData interface.
The EnumInterface interface.
The public PictureWaterMark(InputStream inputeStream, boolean washout) constructor.
The public PictureWaterMark(String filename, boolean washout) constructor.
The downloadImage method in the Field class.
The IDocOleObject interface.
PointsConverter クラス
New feature - TableCell クラスの getWidth() メソッドと setWidth() メソッドは非推奨となり、getCellWidth() メソッドと setCellWidth() メソッドに置き換えられました。
New feature - 以下の名前空間を変更します。
com.spire.license.LicenseProvider -> com.spire.doc.License.LicenseProvider
New feature - 継承関係を変更します。「ShapeGroup implements ShapeObject」を「ShapeGroup implements ShapeBase」に変更します。
New feature - Documentの破棄時に、カスタムフォントに関連するデータも同時に破棄できるようになりました。
// カスタムフォントを設定する
Document.setCustomFontsFolders(string filePath);

// カスタムフォントを破棄する
Document.clearCustomFontsFolders();

// キャッシュ内のメモリを占有しているシステム フォント キャッシュをクリアする
Document.clearSystemFontCache();

Example code:
Document doc = new Document();
doc.loadFromFile("inputFile.docx");
doc.setCustomFontsFolders(@"d:\Fonts");
doc.saveToFile("output.pdf", FileFormat.PDF);
doc.close();
doc.dispose();
New feature - 次の列挙型クラスを変更します。
com.spire.doc.FileFormat.WPS -> com.spire.doc.FileFormat.Wps
com.spire.doc.FileFormat.WPT -> com.spire.doc.FileFormat.Wpt
ComparisonLevel -> TextDiffMode
New feature - 以下のメソッドを変更します。
ComparisonLevel getLevel() -> getTextCompareLevel()
setLevel(ComparisonLevel value) -> setTextCompareLevel(TextDiffMode)
IsPasswordProtect() -> isEncrypted()
getFillEfects() -> getFillEffects()
New feature - 画像の透かしを追加するメソッドを追加しました。
File imageFile = new File("data/E-iceblue.png");
BufferedImage bufferedImage = ImageIO.read(imageFile);
// Create a new instance of the PictureWatermark class with the input BufferedImage, and set the scaling factor for the watermark image
PictureWatermark picture = new PictureWatermark(bufferedImage,false);
		// Or another way to create PictureWatermark
		// PictureWatermark picture = new PictureWatermark();
		// picture.setPicture(bufferedImage);
		// picture.isWashout(false);
		// Set the scaling factor for the watermark image
picture.setScaling(250);
// Set the watermark to be applied to the document
document.setWatermark(picture);
New feature - Shape は、グラフィックスの塗りつぶしを操作するための getFill() メソッドを公開します。setFillColor(null) メソッドの代わりに getFill().setOn(false) を使用します。
New feature - グラフの追加のサポートが追加されました。
// Document の新しいインスタンスを作成します
Document document = new Document();

// ドキュメントにセクションを追加します
Section section = document.addSection();

// セクションに段落を追加し、そこにテキストを追加します
section.addParagraph().appendText("Line chart.");

// セクションに新しい段落を追加します
Paragraph newPara = section.addParagraph();

// 指定された幅と高さの折れ線グラフの形状を段落に追加します
ShapeObject shape = newPara.appendChart(ChartType.Line, 500, 300);

// 図形からチャートオブジェクトを取得します
Chart chart = shape.getChart();

// チャートのタイトルを取得します
ChartTitle title = chart.getTitle();

 // グラフのタイトルのテキストを設定します
title.setText("My Chart");

 // チャート内の既存の系列をクリアします
ChartSeriesCollection seriesColl = chart.getSeries();
seriesColl.clear();

// カテゴリ (X 軸の値) を定義します
String[] categories = { "C1", "C2", "C3", "C4", "C5", "C6" };

// 指定されたカテゴリと Y 軸値を持つ 2 つの系列をグラフに追加します
seriesColl.add("AW Series 1", categories, new double[] { 1, 2, 2.5, 4, 5, 6 });
seriesColl.add("AW Series 2", categories, new double[] { 2, 3, 3.5, 6, 6.5, 7 });

 // ドキュメントを Docx 形式でファイルに保存します
document.saveToFile("AppendLineChart.docx", FileFormat.Docx_2016);

// ドキュメントオブジェクトを使い終わったら破棄します
document.dispose();
New feature - ページのコンテンツを取得するために、ページ モデル Spire.Doc.Pages が提供されています。
// Document の新しいインスタンスを作成します
Document doc = new Document();

// 指定されたファイルからドキュメントを読み込みます
doc.loadFromFile(inputFile);

// ロードされたドキュメントを使用してFixedLayoutDocumentオブジェクトを作成します
FixedLayoutDocument layoutDoc = new FixedLayoutDocument(doc);

// 抽出されたテキストを保存する StringBuilder を作成します
StringBuilder stringBuilder = new StringBuilder();

// 最初のページの最初の行を取得し、StringBuilder に追加します
FixedLayoutLine line = layoutDoc.getPages().get(0).getColumns().get(0).getLines().get(0);
stringBuilder.append("Line: " + line.getText() + "\r\n");

// その行に関連付けられた元の段落を取得し、そのテキストを StringBuilder に追加します
Paragraph para = line.getParagraph();
stringBuilder.append("Paragraph text: " + para.getText() + "\r\n");

// ヘッダーとフッターを含む最初のページのすべてのテキストを取得し、StringBuilder に追加します
String pageText = layoutDoc.getPages().get(0).getText();
stringBuilder.append(pageText + "\r\n");

// ドキュメントの各ページを反復処理し、各ページの行数を出力します
for (Object obj : layoutDoc.getPages()) {
	FixedLayoutPage page = (FixedLayoutPage) obj;
	LayoutCollection lines = page.getChildEntities(LayoutElementType.Line, true);
	stringBuilder.append("Page " + page.getPageIndex() + " has " + lines.getCount() + " lines." + "\r\n");
}

// 最初の段落のレイアウト エンティティの逆引き参照を実行し、それらを StringBuilder に追加します
stringBuilder.append("\r\n");
stringBuilder.append("The lines of the first paragraph:" + "\r\n");

for (Object object : layoutDoc.getLayoutEntitiesOfNode(((Section) doc.getFirstChild()).getBody().getParagraphs().get(0))) {
	FixedLayoutLine paragraphLine = (FixedLayoutLine) object;

	stringBuilder.append(paragraphLine.getText().trim() + "\r\n");
	stringBuilder.append(paragraphLine.getRectangle().toString() + "\r\n");
	stringBuilder.append("");
}

// 抽出したテキストをファイルに書き込みます
FileWriter fileWriter = new FileWriter(new File(outputFile));
fileWriter.write(stringBuilder.toString());
fileWriter.flush();
fileWriter.close();

// ドキュメントリソースを破棄します
doc.close();
doc.dispose();
New feature - SVG グラフィックの追加のサポートが追加されました。
//新しい Document オブジェクトを作成します
Document document = new Document();

//新しいセクションをドキュメントに追加します
Section section = document.addSection();

//新しい段落をセクションに追加します
Paragraph paragraph = section.addParagraph();

//画像 (SVG) を段落に追加します
paragraph.appendPicture(inputSvg);

//ドキュメントを指定された出力ファイルに保存します
document.saveToFile(outputFile, FileFormat.Docx_2013);

//ドキュメントを閉じます
document.dispose();
Bug SPIREDOC-8618 DocをDocxに変換する際に、「Error loading file: Unsupported file format」というエラーが発生する問題を修正しました。
Bug SPIREDOC-8694 WordをPDFに変換する際のシェイプの位置ずれの問題を修正しました。
Bug SPIREDOC-8779 WordをPDFに変換する際に「java.lang.OutOfMemoryError」というエラーが発生する問題を修正しました。
Bug SPIREDOC-8981 WordをPDFに変換する際に画像に余分な枠が表示される問題を修正しました。
Bug SPIREDOC-9321 WordをPDFに変換する際のテーブルの幅が正しく表示されない問題を修正しました。
Bug SPIREDOC-9426
SPIREDOC-9427
SPIREDOC-9953
SPIREDOC-9964
SPIREDOC-10131
WordをPDFに変換する際のページ区切りが正しくない問題を修正しました。
Bug SPIREDOC-9465 DocをXMLに変換する際に内容が失われる問題を修正しました。
Bug SPIREDOC-9551 ドキュメントデータをメモリストリームに保存する際にプログラムが停止する問題を修正しました。
Bug SPIREDOC-9633 WordをPDFに変換する際の文字化けの問題を修正しました。
Bug SPIREDOC-9695 WordをPDFに変換する際に「This is not a structured storage file.」というエラーが発生する問題を修正しました。
Bug SPIREDOC-9874 WordをPDFに変換する際のテーブルスタイルが正しくない問題を修正しました。
Bug SPIREDOC-9917
SPIREDOC-9937
WordをPDFに変換する際に「java.lang.AssertionError」というエラーが発生する問題を修正しました。
Bug SPIREDOC-9951 WordをPDFに変換する際に内容が失われる問題を修正しました。
Bug SPIREDOC-9968 新しい行の追加や行の結合後のテーブル形式が正しくない問題を修正しました。
Bug SPIREDOC-9984 WordをPDFに変換する際に「java.lang.NullPointerException」というエラーが発生する問題を修正しました。
Bug SPIREDOC-10041 WordをPDFに変換する際に「java.lang.ClassCastException」というエラーが発生する問題を修正しました。
Bug SPIREDOC-10075 文書の結合後に数式が編集できなくなる問題を修正しました。
Bug SPIREDOC-10076 WordをPDFに変換する際のグラフのデータ形式が正しくない問題を修正しました。
Bug SPIREDOC-10115 Wordドキュメントのロード時に「java.lang.NullPointerException」というエラーが発生する問題を修正しました。
Bug SPIREDOC-10125 文書のパスワード保護設定後、一部の内容に黒い背景が表示される問題を修正しました。
Bug SPIREDOC-10136 セルの分割後にテーブルが乱れる問題を修正しました。

Spire.Presentation for Java

カテゴリー ID 説明
New feature SPIREPPT-2395 PPTからSVGへの変換速度が向上されました。
New feature SPIREPPT-2400 パスワード付きのストリーム ファイルを読み取るメソッドが追加されました。
presentation.loadFromStream(inputStream, FileFormat.AUTO,"password"); 
New feature SPIREPPT-2405 座標による不規則多角形作成機能が追加されました。
Presentation ppt = new Presentation();
ISlide slide = ppt.getSlides().get(0);
List<Point2D> points = new ArrayList<>();
points.add(new Point2D.Float(50f, 50f));
points.add(new Point2D.Float(50f, 150f));
points.add(new Point2D.Float(60f, 200f));
points.add(new Point2D.Float(200f, 200f));
points.add(new Point2D.Float(220f, 150f));
points.add(new Point2D.Float(150f, 90f));
points.add(new Point2D.Float(50f, 50f));
IAutoShape autoShape = slide.getShapes().appendFreeformShape(points);
autoShape.getFill().setFillType(FillFormatType.NONE);
ppt.saveToFile("out.pptx", FileFormat.PPTX_2013);
ppt.dispose();
New feature SPIREPPT-2406 2点による直線描画機能が追加されました。
Presentation ppt = new Presentation();
ppt.getSlides().get(0).getShapes().appendShape(ShapeType.LINE, new Point2D.Float(50, 70), new Point2D.Float(150, 120));
ppt.saveToFile( "result.pptx ,FileFormat.PPIX_2013),
ppt.dispose().