JavaでPDFをSVGに変換

SVGとは「Scalable Vector Graphics（ 拡大縮小可能なベクター画像）」を意味し、2ビットのベクター画像用に設計されたファイル形式です。ベクターグラフィックには、鮮明さを保ちながら自由に拡大縮小できるなど、多くの利点がある。SVG、PDFはすべてベクターグラフィックスのファイル形式である。 したがって、PDFがSVGに変換されたときに、その中の要素はほとんど失われません。 この記事では、Javaプログラムで**PDFをSVGに変換**する方法を紹介します。

- **[各PDFページをSVGファイルに変換](#各pdfページをsvgファイルに変換)**
- **[すべてのPDFページを1つのSVGファイルに変換](#すべてのpdfページを1つのsvgファイルに変換)**

この記事の変換方法では、無料のAPIであるFree Spire.PDF for Javaを使用する必要があります。[Free Spire.PDF for Javaの公式ウェブサイト](https://www.e-iceblue.com/Introduce/free-pdf-for-java.html)からダウンロードするか、またはMavenからpom.xmlコードを使用してインストールすることができます：
```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.free</artifactId>
        <version>5.1.0</version>
    </dependency>
</dependencies>
```

## 各PDFページをSVGファイルに変換
PDFファイルを直接saveToFileメソッドを使ってSVGファイルに変換すると、結果のファイルには1つのPDFページに対して1つのSVGファイルが存在することになります。例:
1. **PdfDocument** オブジェクトを作成します。
2. **PdfDocument.loadFromFile()** メソッドを用いて PDF 文書を読み込みます。
3. **PdfDocument.saveToFIle()** メソッドでPDF文書をSVGファイルに変換して保存します。

**コード**
**Java**
```java
import com.spire.pdf.*;

public class PDFToSVG {
    public static void main(String[] args) {
        // Document クラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        // ディスクから PDF ドキュメントをロードする
        pdf.loadFromFile("サンプル.pdf");

        // PDF ドキュメントを SVG ファイルに変換して保存する
        pdf.saveToFile("output/PDFToSVG.svg", FileFormat.SVG);
        pdf.close();
    }
}
```

**オリジナルPDFファイル**
![JavaでPDFをSVGに変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/8e72138e-eeb1-33ee-b0bf-445a8eaebfdf.png)

**変換されたSVGファイル**
![各PDFページをSVGファイルに変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e8e8710c-a05a-bf5d-df04-19f089430af8.png)

![各PDFページをSVGファイルに変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/fe311a69-d50f-7781-dfb9-7456d3c543bf.png)


## すべてのPDFページを1つのSVGファイルに変換
PDF文書を単一のSVGファイルに変換するには、setOutputToOneSvgメソッドを使用して変換オプションを設定する必要があります。主なコードの手順を解説します：
PDFドキュメントを単一のSVGファイルに変換するには、変換前にsetOutputToOneSvgメソッドを使用して出力を設定する必要があります。手順は以下の通りです：
1. **PdfDocument** オブジェクトを作成します。
2. **PdfDocument.loadFromFile()** メソッドを使用してディスクからPDFドキュメントをロードします。
3. **PdfDocument.getConvertOptions().setOutputToOneSvg()** メソッドを使用して変換オプションを単一のSVGファイルに設定します。
4. **PdfDocument.saveToFile()** メソッドを使用してPDFドキュメントをSVGファイルに変換して保存します。

**コード**
**Java**
```java
package com.example.spire;

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;

public class Main {
    public static void main(String[] args) {
        // PdfDocumentクラスのオブジェクトを作成する
        PdfDocument pdf = new PdfDocument();

        // ディスクからPDFドキュメントをロードする
        pdf.loadFromFile("サンプル.pdf");

        // 変換オプションを設定してPDFを単一のSVGファイルに変換する
        pdf.getConvertOptions().setOutputToOneSvg(true);

        // PDFドキュメントをSVGファイルに変換して保存する
        pdf.saveToFile("output/PDFをSVGに変換.svg", FileFormat.SVG);
        pdf.close();
    }
}
```

**変換されたSVGファイル**
![すべてのPDFページを1つのSVGファイルに変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/4706cb92-94bf-0b14-7184-a023639be17d.png)

> 上記は、Free Spire.PDF for Javaを使用してPDFファイルをSVGファイルに変換する方法を説明します。このAPIは他にも多くの機能をサポートしています。詳しくは[Spire.PDF for Javaチュートリアル](https://jp.e-iceblue.com/tutorials/java/spire-pdf-java/pdf-java-program-guide-content.html)をご覧ください。