PDFマルチ変換ライブラリ機能紹介:PDFをXML形式に変換
PDFをPDFXML形式に変換
PDFファイルを読み込み、内部のコンテンツ(テキスト・表・図・画像など)を平易なXML形式に変換して出力します。 本ライブラリで出力するXML形式を「Antenna House PDFXML形式」(以下、PDFXML形式)と呼びます。
各コンテンツの詳細な情報を取り出すことで、PDFデータをさまざまな用途に再利用できます。
PDFXML形式とは
- PDFXML形式は、「アンテナハウス株式会社」が定義した、PDFの文書構造を表現するためのXML形式です。PDFXML形式の詳細は、PDFXMLの仕様書をご参照ください。
- PDFXML形式はPDFのコンテンツをテキスト・表・画像などの情報単位にまとめ、分かりやすく扱いやすい表現に置き換えることで、データの再利用を容易にします。
- PDFXML形式を利用して各コンテンツの詳細な情報を取り出すことで、PDFデータをさまざまな用途に再利用できます。
- PDFXML形式は、
- カタログXML(pdf2tmp_catalog.xml)
- スタイルXML(pdf2tmp_style.xml)
- ドキュメントXML(pdf2tmp.xml)
- 画像ファイル
PDFから取り出せる情報
PDFに含まれるコンテンツを扱いやすい形式に変換して、PDFXML形式のファイルや画像データとして取り出します。
段落・行・文字情報 |
|
表(行・セル)情報 |
|
画像情報 |
|
- PDFXML形式への変換時に指定可能なオプションについては、オンラインマニュアルをご参照ください。
- 本ライブラリで変換したサンプルをご参照ください。
XSLTスタイルシートで他の文書形式に変換
本ライブラリで出力したPDFXML形式のファイルを、XSLTスタイルシートを利用して他の文書形式に変換することができます。
変換可能な文書形式
- TEXT
- HTML
- XHTML
- DocBook
- fo、PDF
- PDFXMLを利用するために、サンプルXSLTスタイルシートをご用意しています。
- XSLTスタイルシートの利用例につきましては、サンプルをご参照ください。
PDFXMLリーダーインターフェイスで活用
PDFXMLリーダーは、PDFXML形式のリーダーです。
プログラムで簡単にPDFXML形式を利用可能になります。
本ライブラリで出力したPDFXMLをお客様の開発する .NET アプリケーションからダイレクトにハンドリング可能にするため、PDFXMLリーダーインターフェイスを公開します。
- PDFXMLリーダーインターフェイスの詳細は、オンラインマニュアルをご参照ください。
- PDFXMLリーダーインターフェイスの呼び出し例を以下に示します。
サンプルコード
// AdcAHPDFXMLReader C# sample プログラム
//
// Copyright (C) 2025, Antenna House, Inc. All Rights Reserved.
//
using System;
using System.Collections;
using System.IO;
using System.Text;
using AHPDFXMLReader;
public class MainApp
{
static public void Main(string[] args)
{
if (args.Length < 1)
{
Console.WriteLine("usage: sample CatalogXmpFilePath");
return;
}
try
{
AhpXMLReader ahpReader = new AhpXMLReader();
ahpReader.Load(args[0]);
// スタイルXML
AhpStyles ahpStyles = ahpReader.GetStyles();
// ドキュメントXML
AhpDocument ahpDoc = ahpReader.GetDocument();
// ドキュメントに含まれるページ
for (int p = 0; p < ahpDoc.GetNumberOfPage(); p++)
{
AhpPage ahpPage = ahpDoc.GetPage(p);
Console.WriteLine(
"--- " +
"PageNo:" + p.ToString() +
", Width:" + ahpPage.GetWidth().ToString() +
", Height:" + ahpPage.GetHeight().ToString() +
" ---");
// ページに含まれるセクション
for (int s = 0; s < ahpPage.GetNumberOfSections(); s++)
{
AhpSection ahpSection = ahpPage.GetSection(s);
// セクションに含まれるフレーム
for(int f = 0; f < ahpSection.GetNumberOfFrames(); f++)
{
AhpFrame ahpFrame = ahpSection.GetFrame(f);
string frameType = ahpFrame.GetFrameType();
// テキストフレーム
if (frameType.Equals(AhpTypesExtension.GetValue(AhpTypes.TEXT)))
{
// フレームに含まれるパラグラフ
for(int g = 0; g < ahpFrame.GetNumberOfParagraphs(); g++)
{
AhpParagraph ahpParagraph = ahpFrame.GetParagraph(g);
// パラグラフに含まれる行
for(int l = 0; l < ahpParagraph.GetNumberOfLines(); l++)
{
AhpLine ahpLine = ahpParagraph.GetLine(l);
// 行に含まれる文字
for(int r = 0; r < ahpLine.GetNumberOfRuns(); r++)
{
AhpRun ahpRun = ahpLine.GetRun(r);
// 文字のスタイルIDからフォント情報を取り出す
string cid = ahpRun.GetCid();
AhpStyleRun ahpStyleRun = ahpStyles.GetRun(cid);
AhpFont ahpFont = ahpStyleRun.GetFont();
string encoding = ahpFont.GetEncoding();
string name = ahpFont.GetName();
float size = ahpFont.GetSize();
// 同じスタイルIDを持つ文字列を取り出す
string characters = ahpRun.GetCharacters();
Console.Write(characters);
}
Console.WriteLine("");
}
}
}
}
}
}
Console.WriteLine("\nsample success.");
}
finally
{
}
}
}