チュートリアル

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

Koohji

Koohji

仕事上、2版の Word ドキュメントを受け取り、その違いを見つける必要に迫られることはよくあることです。特に、法令や教育などの分野では、文書の比較は重要であり、よく行われています。この記事では、Spire.Doc for .NET を使用して、C# と VB.NET で2つの Word ドキュメントを比較する方法について学びます。

以下は、比較される2つの Word ドキュメントのスクリーンショットです。

C#/VB.NET:2つの Word ドキュメントを比較する方法

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

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

PM> Install-Package Spire.Doc

2つのドキュメントを比較し、結果を別の Word ドキュメントに保存する

比較結果を別の Word ドキュメントに保存すると、挿入、削除、書式の変更など、元のドキュメントに加えられたすべての変更を確認することができます。以下は、Spire.Doc for .NET を使用して、2つの Word ドキュメントを比較し、結果を別の Word ドキュメントに保存する手順です。

  • Document クラスのオブジェクトを初期化しながら、2つの Word ドキュメントを別々に読み込みます。
  • Document.Compare() メソッドを使用して、2つのドキュメントを比較します。
  • その結果を Document.SaveToFile() メソッドを使用して別の Word ドキュメントに保存します。
  • C#
  • VB.NET
using Spire.Doc;

namespace CompareDocuments
{
    class Program
    {
        static void Main(string[] args)
        {
            //Wordドキュメントを読み込む
            Document doc1 = new Document("C:\\Sample1.docx");

            //もう一方のWordドキュメントを読み込む
            Document doc2 = new Document("C:\\Sample2.docx");

            //Compare two documents
            doc1.Compare(doc2, "桜桃子");

            //Save the differences in a third document
            doc1.SaveToFile("違い.docx", FileFormat.Docx2013);
            doc1.Dispose();
        }
    }
}
Imports Spire.Doc

Namespace CompareDocuments
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Wordドキュメントを読み込む
            Dim doc1 As Document = New Document("C:\\Sample1.docx")

            'もう一方のWordドキュメントを読み込む
            Dim doc2 As Document = New Document("C:\\Sample2.docx")

            'Compare two documents
            doc1.Compare(doc2, "桜桃子")

            'Save the differences in a third document
            doc1.SaveToFile("違い.docx", FileFormat.Docx2013)
            doc1.Dispose()
        End Sub
    End Class
End Namespace

C#/VB.NET:2つの Word ドキュメントを比較する方法

2つの文書を比較し、挿入と削除の情報をリストにする

開発者は、すべての差分ではなく、挿入と削除の情報のみを取得したいと思うかもしれません。以下は、挿入と削除の情報を取得し、それらを2つの別々のリストに入れる手順です。

  • Document クラスのオブジェクトを作成する際に、2つの Word ドキュメントを別々に読み込みます。
  • Document.Compare() メソッドを使用して、2つのドキュメントを比較する。
  • DifferRevisions クラスのコンストラクター関数を使用して、リビジョンを取得します。
  • DifferRevisions.InsertRevisions プロパティを使用して、挿入情報のリストを取得します。
  • DifferRevisions.DeleteRevisions プロパティを使用して、削除情報のリストを取得します。
  • 2つのリストの要素をループして、特定の挿入と削除の内容を取得します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Fields;
using System;

namespace GetDifferencesInList
{
    class Program
    {
        static void Main(string[] args)
        {
            //Wordドキュメントを読み込む
            Document doc1 = new Document("C:\\Sample1.docx");

            //もう一方のWordドキュメントを読み込む
            Document doc2 = new Document("C:\\Sample2.docx");

            //2つのWordドキュメントを比較する
            doc1.Compare(doc2, "桜桃子");

            //改訂を取得する
            DifferRevisions differRevisions = new DifferRevisions(doc1);

            //挿入の改訂を返し、リストに入れる
            var insetRevisionsList = differRevisions.InsertRevisions;

            //削除の改訂を返し、リストに入れる
            var deletRevisionsList = differRevisions.DeleteRevisions;

            //2つのint型変数を作成する
            int m = 0;
            int n = 0;

            //挿入改訂のリストをループする
            for (int i = 0; i < insetRevisionsList.Count; i++)
            {
                if (insetRevisionsList[i] is TextRange)
                {
                    m += 1;
                    //特定の改訂を取得し、その内容を取得する
                    TextRange textRange = insetRevisionsList[i] as TextRange;
                    Console.WriteLine("挿入 #" + m + ":" + textRange.Text);
                }
            }
            Console.WriteLine("=====================");

            //削除改訂のリストをループする
            for (int i = 0; i < deletRevisionsList.Count; i++)
            {
                if (deletRevisionsList[i] is TextRange)
                {
                    n += 1;
                    //特定の改訂を取得し、その内容を取得する
                    TextRange textRange = deletRevisionsList[i] as TextRange;
                    Console.WriteLine("削除 #" + n + ":" + textRange.Text);
                }
            }
            Console.ReadKey();
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Fields
Imports System

Namespace GetDifferencesInList
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Wordドキュメントを読み込む
            Dim doc1 As Document = New Document("C:\\Sample1.docx")

            'もう一方のWordドキュメントを読み込む
            Dim doc2 As Document = New Document("C:\\Sample2.docx")

            '2つのWordドキュメントを比較する
            doc1.Compare(doc2, "桜桃子")

            '改訂を取得する
            Dim differRevisions As DifferRevisions = New DifferRevisions(doc1)

            '挿入の改訂を返し、リストに入れる
            Dim insetRevisionsList As var = differRevisions.InsertRevisions

            '削除の改訂を返し、リストに入れる
            Dim deletRevisionsList As var = differRevisions.DeleteRevisions

            '2つのint型変数を作成する
            Dim m As Integer = 0
            Dim n As Integer = 0

            '挿入改訂のリストをループする
            Dim i As Integer
            For i = 0 To insetRevisionsList.Count - 1 Step i + 1
                If TypeOf insetRevisionsList(i) Is TextRange Then
                    m += 1
                    '特定の改訂を取得し、その内容を取得する
                    Dim textRange As TextRange = insetRevisionsList(i) As TextRange 
                    Console.WriteLine("挿入 #" + m + ":" + textRange.Text)
                End If
            Next
            Console.WriteLine("=====================")

            '削除改訂のリストをループする
            Dim i As Integer
            For i = 0 To deletRevisionsList.Count - 1 Step i + 1
                If TypeOf deletRevisionsList(i) Is TextRange Then
                    n += 1
                    '特定の改訂を取得し、その内容を取得する
                    Dim textRange As TextRange = deletRevisionsList(i) As TextRange 
                    Console.WriteLine("削除 #" + n + ":" + textRange.Text)
                End If
            Next
            Console.ReadKey()
        End Sub
    End Class
End Namespace

C#/VB.NET:2つの Word ドキュメントを比較する方法

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

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

コンピュータに MS Word をインストールする必要がないため、Word 文書形式よりも、イメージ書式をプラットフォーム間で共有したりプレビューしたりするのが便利です。また、Word をイメージに変換することで、文書のオリジナルの外観を維持でき、他の人がそれをさらに修正するのを防ぐことができます。この記事では、Spire.Doc for .NET を使用して、C# および VB.NET でプログラムによって Word をイメージに変換する方法を示します。

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

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

PM> Install-Package Spire.Doc

Word を JPG に変換する

Spire.Doc for .NET が提供する Document.SaveToImages() メソッドは、Word 文書のページを Bitmap または Metafile に変換します。その後、Bitmap または Metafile は、BMP、EMF、JPEG、PNG、GIF または WMF 書式のイメージとして保存することができます。以下は Word を JPG に変換するための詳細な手順です。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書をロードします。
  • Document.SaveToImages() メソッドを使用して、Word 文書を Bitmap イメージに変換します。
  • イメージコレクションをループし、特定のイメージを取得して JPG として保存します。
  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using System;
using System.Drawing;
using System.Drawing.Imaging;

namespace ConvertWordToJPG
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成する
            Document doc = new Document();

            //Wordをロードする
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx");

            //文書全体のページをイメージに変換する 
            Image[] images = doc.SaveToImages(ImageType.Bitmap);

            //イメージコレクションをループする
            for (int i = 0; i < images.Length; i++)
            {
                //イメージをJPGとして保存する
                string outputfile = String.Format("‪Image-{0}.jpg", i);‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
                images[i].Save("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile, ImageFormat.Jpeg);
            }
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
 
Namespace ConvertWordToJPG
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'Documentオブジェクトを作成する
            Document doc  =  New Document()
 
            'Wordをロードする
           doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx")

            '文書全体のページをイメージに変換する 
            Dim images() As Image =  doc.SaveToImages(ImageType.Bitmap) 
 
            'イメージコレクションをループする
            Dim i As Integer
            For  i = 0 To  images.Length- 1  Step  i + 1
                'イメージをJPGとして保存する
                Dim outputfile As String =  String.Format("‪Image-{0}.jpg",i) ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
                images(i).Save("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile, ImageFormat.Jpeg)
            Next
        End Sub
    End Class
End Namespace

Word を SVG に変換する

Spire.Doc for .NET を使用して Word 文書を一連のバイト配列として保存し、SVG 文書にそれぞれ書き込むことができます。Word を SVG に変換するための詳細な手順は次のとおりです。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書をロードします。
  • Document.SaveToSVG() メソッドを使用して、文書をバイト配列キューとして保存します。
  • すべてのバイト配列をループし、指定されたバイト配列を取得する。
  • SVG 文書にバイト配列を書き込みます。
  • C#
  • VB.NET
using Spire.Doc;
using System;
using System.Collections.Generic;
using System.IO;

namespace CovnertWordToSVG
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成する
            Document doc = new Document();

            //Wordをロードする 
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx");

            //文書をバイト配列キューとして保存する
            Queue<byte[]> svgBytes = doc.SaveToSVG();

            //すべてのバイト配列をループする
            for (int i = 0; i < svgBytes.Count; i++)
            {
                //キューを配列に変換する
                byte[][] bytes = svgBytes.ToArray();

                //出力文書名を指定する
                string outputfile = String.Format("‪Image-{0}.svg", i);‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬

                //SVG文書にバイト配列を書き込む                
                FileStream fs = new FileStream("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile, FileMode.Create);
                fs.Write(bytes[i], 0, bytes[i].Length);
                fs.Close();
            }
        }
    }
}
Imports Spire.Doc
Imports System
Imports System.Collections.Generic
Imports System.IO
 
Namespace CovnertWordToSVG
    Class Program
        Shared  Sub Main(ByVal args() As String)
            'Documentオブジェクトを作成する
            Document doc  =  New Document()
 
            'Wordをロードする
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx")
 
            '文書をバイト配列キューとして保存する
            Dim svgBytes()> As Queue<byte =  doc.SaveToSVG() 
 
            'すべてのバイト配列をループする
            Dim i As Integer
            For  i = 0 To  svgBytes.Count- 1  Step  i + 1
                'キューを配列に変換する
                Dim bytes()() As Byte =  svgBytes.ToArray() 
 
                '出力文書名を指定する
                Dim outputfile As String =  String.Format("‪Image-{0}.svg",i) ‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
 
                ' SVG文書にバイト配列を書き込む
                Dim fs As FileStream =  New FileStream("C:\\Users\\Administrator\\Desktop\\Images\\" + outputfile,FileMode.Create) 
                fs.Write(bytes(i), 0, bytes(i).Length)
                fs.Close()
            Next
        End Sub
    End Class
End Namespace

Word をカスタム解像度の PNG に変換する

より解像度の高いイメージはコンテンツをより明確に表示することができます。以下の手順に従って、Word を PNG に変換するときに、イメージ解像度を設定することができます。

  • Document オブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用して Word 文書をロードします。
  • Document.SaveToImages() メソッドを使用して、文書を Bitmap イメージに変換します。
  • イメージコレクションをループし、特定のビットマップを取得します。
  • カスタム ResetResolution() メソッドを使用して、イメージの解像度を再設定します。
  • イメージを PNG として保存します。
  • C#
  • VB.NET
using Spire.Doc;
using System;
using System.Drawing;
using System.Drawing.Imaging;
using Spire.Doc.Documents;

namespace ConvertWordToPng
{
    class Program
    {
        static void Main(string[] args)
        {
            //Documentオブジェクトを作成する
            Document doc = new Document();

            //Word文書をロードする
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx ");

            //文書全体のページをイメージに変換する
            Image[] images = doc.SaveToImages(ImageType.Metafile);

            //イメージコレクションをループする
            for (int i = 0; i < images.Length; i++)
            {
                //イメージの解像度を設定する
                Image newimage = ResetResolution(images[i] as Metafile, 150);

                //イメージをPNGとして保存する
                string outputfile = String.Format("image-{0}.png", i);
                newimage.Save(outputfile, ImageFormat.Png);
            }
        }

        //ResetResolution()を使用しでイメージの解像度を設定する
        public static Image ResetResolution(Metafile mf, float resolution)
        {
            int width = (int)(mf.Width * resolution / mf.HorizontalResolution);
            int height = (int)(mf.Height * resolution / mf.VerticalResolution);
            Bitmap bmp = new Bitmap(width, height);
            bmp.SetResolution(resolution, resolution);
            using (Graphics g = Graphics.FromImage(bmp))
            {
                g.DrawImage(mf, Point.Empty);
            }
            return bmp;
        }
    }
}
Imports Spire.Doc
Imports System
Imports System.Drawing
Imports System.Drawing.Imaging
Imports Spire.Doc.Documents

Namespace ConvertWordToPng
    Class Program
        Shared Sub Main(ByVal args() As String)
            'Documentオブジェクトを作成する
            Dim doc As Document = New Document()

            'Word文書をロードする
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Template.docx")

            '文書全体のページをイメージに変換する
            Dim images() As Image = doc.SaveToImages(ImageType.Metafile)

            'イメージコレクションをループする
            Dim i As Integer
            For i = 0 To images.Length - 1 Step i + 1
                'イメージの解像度を設定する
                Dim Newimage As Image = ResetResolution(images(i) As Metafile, 150)

                'イメージをPNGとして保存する
                Dim outputfile As String = String.Format("image-{0}.png", i)
                Newimage.Save(outputfile, ImageFormat.Png)
            Next
        End Sub

        'ResetResolution()を使用しでイメージの解像度を設定する
        Public Shared Function ResetResolution(ByVal mf As Metafile, ByVal resolution As Single) As Image
            Dim width As Integer = CType((mf.Width * resolution / mf.HorizontalResolution), Integer)
            Dim height As Integer = CType((mf.Height * resolution / mf.VerticalResolution), Integer)
            Dim bmp As Bitmap = New Bitmap(width, height)
            bmp.SetResolution(resolution, resolution)
            Imports (Graphics g = Graphics.FromImage(bmp))
            {
                g.DrawImage(mf, PoInteger.Empty)
            }
            Return bmp
        End Function
    End Class
End Namespace

C#/VB.NET:Word をイメージに変換する(JPG, SVG, PNG)

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

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

PDF ドキュメントを印刷または共有する場合、ドキュメント内に白紙ページがあるかどうかを確認した方がよいでしょう。なぜなら、白紙ページは紙の無駄遣いにつながり、ドキュメントの専門的な外観が損なわれてしまうからです。しかし、すべてのページに目を通して空白のページを見つけ、それを削除するには、多くの時間がかかるでしょう。この問題に対処するためのより良い方法は、Spire.PDF for Java を使用することです。この記事では、プログラミングによって簡単に PDF ドキュメントから空白ページを見つけ、削除するために Spire.PDF for Java を使用する方法を示しています。

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

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>8.9.1</version>
    </dependency>
</dependencies>

PDF ドキュメントから空白のページを検索して削除する

Spire.PDF for Java は、PDF ページが完全に白紙であるかどうかを検出するメソッド PdfPageBase.isBlank() を提供しています。しかし、空白に見えるいくつかのページが実際に白い画像を含んでいる、これらのページは PdfPageBase.isBlank() メソッドを使用して空白とみなされないでしょう。したがって、白紙ページと白い画像を含むページを検出するために、 PdfPageBase.isBlank() メソッドと組み合わせて使用するカスタムメソッド isBlankImage() を作成する必要があります。

注意:この解決策は、PDF ページを画像に変換し、画像が空白であるかどうかを検出します。変換された画像の評価メッセージを削除するには、ライセンスを適用する必要があります。そうでなければ、この方法は正しく動作しません。もしライセンスをお持ちでない場合は、このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。でご連絡いただき、評価用の一時的なライセンスをお受け取りください。

詳細な手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.loadFromFile() メソッドを使用して PDF ドキュメントを読み込みます。
  • PdfPageBase.isBlank() メソッドを使用して、PDF ドキュメント内のページをループして、ページが空白であるかどうかを検出します。
  • 完全に白紙のページについては、PdfDocument.getPages().remove() メソッドを使用してそれらを削除します。
  • 完全に空白でないページについては、PdfDocument.saveAsImage() メソッドを使用して画像として保存し、変換後の画像が空白かどうかをカスタムメソッド isBlankImage() で検出し、空白の画像に対応するページを PdfDocument.getPages().remove() で削除してください。
  • PdfDocument.saveToFile() メソッドを使用して結果ドキュメントを保存します。
  • Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfImageType;

import java.awt.*;
import java.awt.image.BufferedImage;

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

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

        //PDFドキュメントを読み込む
        pdf.loadFromFile("C:/Sample.pdf");

        BufferedImage image;
        //PDF内のページをループする
        for(int i = pdf.getPages().getCount()-1; i>=0; i--)
        {
            //ページを取得する
            PdfPageBase page = pdf.getPages().get(i);
            //ページが空白かどうかを検出する
            if(page.isBlank())
            {
                //白紙ページを削除する
                pdf.getPages().remove(page);
            }
            else
            {
                //PDFのページを画像として保存する
                image = pdf.saveAsImage(i, PdfImageType.Bitmap);

                //変換後の画像が空白かどうかを検出する
                if (isBlankImage(image))
                {
                    //白紙画像に対応するページを削除する
                    pdf.getPages().remove(page);
                }
            }

        }

        //結果のドキュメントを保存する
        pdf.saveToFile("空白ページの削除.pdf");
    }

    //画像が空白かどうかを検出する
    public static boolean isBlankImage(BufferedImage image)
    {
        BufferedImage bufferedImage = image;

        Color pixel;
        for (int i = 0; i < bufferedImage.getWidth(); i++)
        {
            for (int j = 0; j < bufferedImage.getHeight(); j++)
            {
                pixel = new Color(bufferedImage.getRGB(i, j));
                if (pixel.getRed() < 240 || pixel.getGreen() < 240 || pixel.getBlue() < 240)
                {
                    return false;
                }
            }
        }
        return true;
    }
}

Java:PDF から空のページを検索して削除する方法

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

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

Spire.Presentation 7.9.2 のリリースを発表できることをうれしく思います。このバージョンでは、PPTをPDFに変換する際に隠されたスライドを変換しないように設定する機能と、スライドに最初に表示される一致するテキストを検索してスタイルを変更する機能をサポートしました。また、今回のアップデートでは、PPTからイメージへの変換機能も強化しました。また、多くの既知の問題が修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREPPT-2037 スライドに最初に表示される一致するテキストを検索してスタイルを変更する機能をサポートしました。
Presentation ppt = new Presentation();
            ppt.LoadFromFile(inputFile);
            string text = "create";
            TextRange textRange = ppt.Slides[0].FindFirstTextAsRange(text);
            textRange.Fill.FillType = FillFormatType.Solid;
            textRange.Fill.SolidColor.Color = Color.Red;
            textRange.FontHeight = 28;
            textRange.LatinFont = new TextFont("Times New Roman");
            textRange.IsBold = TriState.True;
            textRange.IsItalic = TriState.True;
            textRange.TextUnderlineType = TextUnderlineType.Double;
            textRange.TextStrikethroughType = TextStrikethroughType.Single;
New feature SPIREPPT-2065 PPTをPDFに変換する際に隠されたスライドを変換しないように設定する機能をサポートしました。
Presentation presentation = new Presentation();
            presentation.LoadFromFile(input);
            presentation.SaveToPdfOption.ContainHiddenSlides = false;
            presentation.SaveToFile(output, FileFormat.PDF);
Bug SPIREPPT-2034 データラベルのフォントサイズと色の設定が機能しない問題が修正されました。
Bug SPIREPPT-2051 PPTをイメージに変換する際にコンテンツが失われていた問題が修正されました。
Bug SPIREPPT-2067 PPTをロードする際に、アプリケーションが「System.ArgumentOutOfRangeException」をスローする問題が修正されました。
ここで Spire. Presentation 7.9.2 をダウンロードする

雑誌、新聞、研究論文などでは、多段組の PDF がよく使われます。Spire.PDF for Java を使えば、コードから簡単に多段組の PDF を作成することができます。この記事では、Java アプリケーションにおいて 2段組の PDF を作成する方法を紹介します。

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

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>8.8.3</version>
    </dependency>
</dependencies>

2段組の PDF を作成する

詳しい手順は以下の通りです。

  • PdfDocument クラスのオブジェクトを作成します。
  • PdfDocument.getPages().add() メソッドを使用して、PDF に新しいページを追加します。
  • PdfPageBase.getCanvas().drawLine() メソッドを使用して、PDF に線を追加し、その書式を設定します。
  • PdfPageBase.getCanvas().drawString() メソッドを使用して、PDF 内の2つの別々の矩形領域にテキストを追加しています。
  • PdfDocument.saveToFile() メソッドを使用して、ドキュメントを PDF に保存します。
  • Java
import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;

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

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

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

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

        //位置と幅を設定する
        float x = 0;
        float y = 15;
        float width = 600;

        //PdfPen クラスのオブジェクトを作成する
        PdfPen pen = new PdfPen(new PdfRGBColor(Color.black), 1f);

        //PDFページ上に線を描画する
        page.getCanvas().drawLine(pen, x, y, x + width, y);

        //段落テキストを定義する
        String s1 = "Spire.PDF for Java は、Javaアプリケーションが Adobe Acrobat を使用せずに PDF ドキュメントを読み取り、"
                + "書き込み、保存できるようにする PDF API です。この Java PDF コンポーネントを使用すると、"
                + "開発者とプログラマーは、PDF ファイルを最初から作成したり、既存の PDF ドキュメント"
                + "を完全に Java アプリケーション( J2SE および J2EE )で処理したりするための豊富な機能を実装できます。";
        String s2 = "Spire.PDF for Java は、セキュリティ設定、PDF からのテキスト/画像の抽出、PDF のマージ/分割、"
                + "PDFへのテキスト/画像/形状/バーコードの描画、フォームフィールドの作成と入力、"
                + "PDFレイヤーの追加と削除、PDF のオーバーレイ、PDF へのテキスト/画像の透かしの挿入、"
                + "PDF ブックマークの追加/更新/削除、PDF へのテーブルの追加、"
                + "PDF ドキュメントの圧縮など、多種かつ豊富な機能をサポートできます。";

        //ページの幅と高さを取得する
        double pageWidth = page.getClientSize().getWidth();
        double pageHeight = page.getClientSize().getHeight();

        //PdfSolidBrush クラスのオブジェクトを作成する
        PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.BLACK));

        //PdfTrueTypeFont クラスのオブジェクトを作成する
        PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Yu Mincho",Font.PLAIN,14));

        //PdfStringFormat クラスによるテキスト配置を設定する
        PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);

        //テキストを描画する
        page.getCanvas().drawString(s1, font, brush, new Rectangle2D.Double(0, 20, pageWidth / 2 - 8f, pageHeight), format);
        page.getCanvas().drawString(s2, font, brush, new Rectangle2D.Double(pageWidth / 2 + 8f, 20, pageWidth / 2 - 8f, pageHeight), format);

        //ドキュメントを保存する
        String output = "2段組PDFの作成.pdf";
        doc.saveToFile(output, FileFormat.PDF);
    }
}

Java:段組 PDF ドキュメントの作成

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

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

Spire.XLS 12.9.2 のリリースを発表できることを嬉しく思います。このバージョンでは、条件付き書式の色の取得をサポートしました。Excel から PDF への変換機能を強化しました。また、Linux システムで RichText を取得する際に、アプリケーションが「System.ArgumentException」をスローするなどの既知の問題も修正されました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
New feature SPIREXLS-4084 条件付き書式の色の取得をサポートしました。
Color color = cRange.GetConditionFormatsStyle().Color; 
Bug SPIREXLS-718
SPIREXLS-4066
XLS を PDF に変換した後、コンテンツの書式が正しくない問題を修正しました。
Bug SPIREXLS-2073 Linux システムで RichText を取得する際に、アプリケーションが「System.ArgumentException」をスローする問題を修正しました。
Bug SPIREXLS-2308 システム DPI が125%に設定されている場合、グラフをイメージに保存した後に内容が切り取られる問題が修正されました。
Bug SPIREXLS-3036 Excel を PDF に変換した後、改ページが正しくない問題が修正されました。
Bug SPIREXLS-3278 システム DPI が125%に設定されている場合、Excel をイメージに保存した後に内容が不完全になっていた問題が修正されました。
Bug SPIREXLS-4038 グラフをイメージに変換した後、内容が正しくない問題が修正されました。
Bug SPIREXLS-4047 Pdf OLE オブジェクトをExcelに挿入できなかった問題が修正されました。
Bug SPIREXLS-4051 Excel を PDF に変換する際に、アプリケーションが「Shape failing to render」をスローする問題が修正されました。
Bug SPIREXLS-4069 Excel をロード時に、アプリケーションがハングアップしていた問題が修正されました。
Bug SPIREXLS-4087 新しいバージョンでセルが sheet.Range[0,1].Text="=SUM(18,29)" に対して生成した数値書式が、テキストではなく式の計算値である問題が修正されました。
Bug SPIREXLS-4099 Excel をロードする際にアプリケーションが「Element is an invalid XmlNodeType」をスローする問題が修正されました。
Bug SPIREXLS-4100 Excel をイメージに変換した後、コンテンツが失われていた問題が修正されました。
Bug SPIREXLS-4104 日付をセルに挿入すると日付の書式が失われる問題が修正されました。
ここで Spire.XLS 12.9.2 をダウンロードする

XPS は固定ページレイアウトを持つファイル書式です。この書式は、ドキュメントの忠実度を維持し、デバイスに依存しないドキュメントの外観を提供することができます。PowerPoint ファイルを既存の形式で印刷したり、他の人に送信したりするには、XPS に変換することができます。この記事では、Spire.Presentation for Java を使用して PowerPoint を XPS に変換する方法を示します。以下に具体的な手順と方法を示します。

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

まず、Spire.Presentation for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation</artifactId>
        <version>7.8.2</version>
    </dependency>
</dependencies>

PowerPoint のスライドを XPS に変換する方法

Spire.Presentation for Java が提供する Presentation.saveToFile(java.lang.String file, FileFormat fileFormat) メソッドは、スライドを XPS ファイル書式として保存します。具体的な手順は次のとおりです。

  • Presentation クラスのオブジェクトを作成します。
  • Presentation.loadFromFile() メソッドを使用して、PowerPoint プレゼンテーションをロードします。
  • Presentation.saveToFile() メソッドを使用して、ファイルを XPS として保存します。
  • Java
import com.spire.presentation.*;

public class PPTtoXPS {
    public static void main(String[] args) throws  Exception{
        // Presentationクラスのオブジェクトを作成する
        Presentation ppt = new Presentation();

        // PowerPointプレゼンテーションをロードする
        ppt.loadFromFile("input.pptx");

        //ファイルをXPSとして保存する
        ppt.saveToFile("ToXPS.xps",FileFormat.XPS);
        ppt.dispose();
    }
}

Java:PowerPoint を XPS に変換する方法

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

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

Spire.Doc 10.9.6 のリリースを発表できることを嬉しく思います。このバージョンでは、Word から PDF への変換機能を強化しました。詳細は以下の内容を読んでください。

このリリースで行われた変更のリストは次のとおりです
カテゴリー ID 説明
Bug SPIREDOC-8386 Word を PDF に変換した後、灰色の長方形の左枠が切り取られていた問題が修正されました。
Bug SPIREDOC-8390 Word を PDF に変換した後、一部のコンテンツが失われていた問題が修正されました。
ここで Spire.Doc 10.9.6 をダウンロードする

パスワードで保護された PDF を開くとき、それはパスワードを入力する必要があります。しかし、時には、PDF を開く前に、PDF がパスワードで保護されているかどうかを知る必要があります。Spire.PDF for Java は、PDF ドキュメントがパスワードで保護されているかどうかを判断するためのメソッド PdfDocument.isPasswordProtected() を提供しています。

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

まず、Spire. PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>8.8.3</version>
    </dependency>
</dependencies>

PDF ドキュメントがパスワードで保護されているかどうかを検出する

詳しい手順は以下の通りです。

  • ファイルパスを取得します。
  • PdfDocument.isPasswordProtected() メソッドを使用して、PDF がパスワードで保護されているかどうかを検出します。
  • 結果を出力する。
  • Java
import com.spire.pdf.PdfDocument;

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

        //ファイルパスを定義する
        String filePath ="Sample.pdf";

        //PDFドキュメントがパスワードで保護されているかどうかを検出する
        boolean isProtected = PdfDocument.isPasswordProtected(filePath);

        //結果を印刷する
        if(isProtected)
        {
            System.out.println("このドキュメントはパスワードで保護されています。");
        }
        else
        {
            System.out.println("このドキュメントはパスワードで保護されていません。");
        }

    }
}

Java:PDF ドキュメントがパスワードで保護されているかの判断

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

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

Spire.Office for Java 7.9.6 のリリースを発表できることをうれしく思います。今回のアップデートには、いくつかの新機能が含まれています。Spire.XLS for Java はカスタムソートがサポートして、Excel 2016 で定義された Chart タイプ を PDF と画像に変換がサポートしました。Spire.PDF for Java は、無秩序リストの作成をサポートします。Spire.Doc for Java は、Word から PDF への変換機能を強化します。さらに、多くの既知のバグが正常に修正されました。詳細は以下の内容を読んでください。

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

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

Spire.XLS for Java

カテゴリー ID 説明
New feature SPIREXLS-4002 Worksheet.getMaxDispalyRange() メソッドを使用して画像、形状などのオブジェクトを含むすべてのセル範囲の取得をサポートしました。
Workbook workbook = new Workbook();
workbook.loadFromFile("TEST.xlsx");
        Worksheet sheet1 = workbook.getWorksheets().get(0);
        //copy all objects(such as text, shape, image...) from sheet2 to sheet1
        for(int i=1;i<workbook.getWorksheets().getCount(); i++){
            Worksheet sheet2 = workbook.getWorksheets().get(i);
sheet2.copy((CellRange) sheet2.getMaxDisplayRange(),sheet1,sheet1.getLastRow()+1,sheet2.getFirstColumn(),true);
        }
        workbook.saveToFile("output.xlsx", ExcelVersion.Version2013);
New feature SPIREXLS-4026 =Days() 式をサポートしました。
Workbook workbook = new Workbook();
workbook.loadFromFile("Test.xlsx");
        Worksheet sheet = workbook.getWorksheets().get(0);
sheet.getCellRange("C4").setFormula("=DAYS(A8,A1)");
workbook.saveToFile(""RES.xlsx"");
Bug SPIREXLS-3980 XML から Excel に変換した後、コンテンツフォーマットが正しくない問題が修正されました。
Bug SPIREXLS-3995 Excel から SVG に変換した後、グラフのタイトルが正しくない問題が修正されました。
Bug SPIREXLS-4014 Excel から PDF に変換した後、コンテンツフォーマットが正しくない問題が修正されました。
Bug SPIREXLS-4020 Excel から PDF に変換するときに、アプリケーションが「StringIndexOutOfBoundsException」をスローする問題が修正されました。
Bug SPIREXLS-4054 グラフ DataRange を取得するときに、アプリケーションが「NullPointerException」をスローする問題が修正されました。
Bug SPIREXLS-4070 Files.deleteIfExists() を使用して isPasswordProtected() メソッドで検出されたファイルを削除するときに、アプリケーションが「FileSystemException」をスローする問題が修正されました。
Bug SPIREXLS-2862 Excel を PDF に変換する際に、改行位置が正しくない問題が修正されました。
Bug SPIREXLS-2986
SPIREXLS-3019
Excel を PDF に変換する際に、ページ余白が正しくない問題が修正されました。
Bug SPIREXLS-4043 Excel を HTML に変換する際に、テーブルレイアウトが正しくない問題が修正されました。
Bug SPIREXLS-4072 ピボット・テーブルのフィルタの選択した値を変更すると、アプリケーションが「java.lang.NullPointerException」をスローする問題が修正されました。
Bug SPIREXLS-4073 Excel を PDF に変換する際に、セルの枠線が失われていた問題が修正されました。
Bug SPIREXLS-4075 グラフを画像に変換した後、X軸テキストの方向が正しくない問題が修正されました。
Bug SPIREXLS-4012 ヘッダーとフッターの画像を削除しても、ドキュメントのサイズが小さくならなかった問題が修正されました。
Bug SPIREXLS-4105 Excel をロードする際に、アプリケーションが「Unknown char:%」をスローする問題が修正されました。

Spire.PDF for Java

カテゴリー ID 説明
New feature - 無秩序リストの作成をサポートしました。
public void DrawMarker(PdfUnorderedMarkerStyle style, String outputFile) {
    PdfDocument doc = new PdfDocument();
    PdfNewPage page = (PdfNewPage) doc.getPages().add();
    PdfMarker marker = new PdfMarker(style);
    String listContent = "Data Structure\n"
            + "Algorithm\n"
            + "Computer Newworks\n"
            + "Operating System\n"
            + "C Programming\n"
            + "Computer Organization and Architecture";
    PdfUnorderedList list = new PdfUnorderedList(listContent);
    list.setIndent(2);
    list.setTextIndent(4);
    list.setMarker(marker);
    list.draw(page, 100, 100);
    doc.saveToFile(outputFile, FileFormat.PDF);
    doc.close();
}
public void PdfMarker_CustomImage() throws Exception {
    String outputFile = "PdfMarker_CustomImage.pdf";
    String inputFile_Img = "sample.png";
    PdfDocument doc = new PdfDocument();
    PdfNewPage page = (PdfNewPage) doc.getPages().add();
    PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_Image);
    marker.setImage(PdfImage.fromFile(inputFile_Img));
    String listContent = "Data Structure\n"
            + "Algorithm\n"
            + "Computer Newworks\n"
            + "Operating System\n"
            + "C Programming\n"
            + "Computer Organization and Architecture";
    PdfUnorderedList list = new PdfUnorderedList(listContent);
    list.setIndent(2);
    list.setTextIndent(4);
    list.setMarker(marker);
    list.draw(page, 100, 100);
    doc.saveToFile(outputFile, FileFormat.PDF);
    doc.close();
}
public void PdfMarker_CustomTemplate() throws Exception {
    String outputFile = "PdfMarker_CustomTemplate.pdf";
    String inputFile_Img = "sample.png";
    PdfDocument doc = new PdfDocument();
    PdfNewPage page = (PdfNewPage) doc.getPages().add();
    PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_Template);
    PdfTemplate template = new PdfTemplate(210, 210);
    marker.setTemplate(template);
    template.getGraphics().drawImage(PdfImage.fromFile(inputFile_Img), 0, 0);
    String listContent = "Data Structure\n"
            + "Algorithm\n"
            + "Computer Newworks\n"
            + "Operating System\n"
            + "C Programming\n"
            + "Computer Organization and Architecture";
    PdfUnorderedList list = new PdfUnorderedList(listContent);
    list.setIndent(2);
    list.setTextIndent(4);
    list.setMarker(marker);
    list.draw(page, 100, 100);
    doc.saveToFile(outputFile, FileFormat.PDF);
    doc.close();
}
public void PdfMarker_CustomString() throws Exception {
    String outputFile = "PdfMarker_CustomString.pdf";
    PdfDocument doc = new PdfDocument();
    PdfNewPage page = (PdfNewPage) doc.getPages().add();
    PdfMarker marker = new PdfMarker(PdfUnorderedMarkerStyle.Custom_String);
    marker.setText("AAA");
    String listContent = "Data Structure\n"
            + "Algorithm\n"
            + "Computer Newworks\n"
            + "Operating System\n"
            + "C Programming\n"
            + "Computer Organization and Architecture";
    PdfUnorderedList list = new PdfUnorderedList(listContent);
    list.setIndent(2);
    list.setTextIndent(4);
    list.setMarker(marker);
    list.draw(page, 100, 100);
    doc.saveToFile(outputFile, FileFormat.PDF);
    doc.close();
Adjustment - 署名タイムスタンプの内部セキュリティが調整されました。
Bug SPIREPDF-4780 PDF を Tiff に変換し、アプリケーションの実行時間が長く、メモリ消費が大きい問題が修正されました。
Bug SPIREPDF-5387 PDF ドキュメントのロードするときに、アプリケーションが「Read failure」をスローした問題を修正しました。
Bug SPIREPDF-5390 PDF を Excel に変換した後、文書のフォントが太くなって消えてしまった問題を修正しました。
Bug SPIREPDF-5402 PDF を Excel に変換するときにメモリオーバーフローが発生する問題を修正しました。
Bug SPIREPDF-5419 PDF を Excel に変換する際に、アプリケーションが「java.lang.NullPointerException」をスローする問題が修正されました。
Bug SPIREPDF-5422
SPIREPDF-5435
抽出テーブルの内容が不完全であった問題が修正されました。
Bug SPIREPDF-5423 組み合わせ枠域が平坦化した後、コンテンツが重複する問題が修正されました。
Bug SPIREPDF-5438 PDF を PDFA3A に変換した後、結果文書のアラビア文字の表示が正しくなかったことが修正されました。
Bug SPIREPDF-5446 PDF を画像に変換する際に、アプリケーションが「java.lang.NullPointerException」をスローする問題が修正されました。

Spire.Doc for Java

カテゴリー ID 説明
Bug SPIREDOC-7704 Word で PDF を変換する際に、otf形式のプライベートフォントを設定した後にアプリケーションが「IllegalArgumentException」をスローする問題を修正しました。
Bug SPIREDOC-7841 Word を PDF に変換する際に、プライベートフォントを埋め込むことに失敗した問題が修正されました。
Bug SPIREDOC-8242 DOC から DOCX 2007 に変換するときに、コンテンツの配置が不一致の問題を修正しました。