ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
技術の向上とインターネット利用の増加に伴い、データの送受信は主にPDFファイルなどのデジタル形式で行われることが多くなっています。
C#でPDFドキュメントを扱うことは、最近まで開発者にとって困難でした。開発者がアプリケーションにPDFの閲覧機能やPDF生成機能を組み込む必要があるシナリオは多く存在します。 これを念頭に置いて、多くのライブラリがこれらおよび類似のタスクを容易にするために開発されています。
この記事では、.NETおよび.NET Coreの開発者向けの最も人気のあるPDFライブラリの2つを比較します。 これらの2つのライブラリは:
PDFium.NET SDKライブラリ
IronPDFおよびPDFium.NETは、.NETアプリケーションでPDFを作成、操作、および印刷することができます。 問題となるのは、どのライブラリを使用すべきかということです。 この記事を読んで、ご自身で判断してください。
まず、2つのライブラリが提供する内容を見てから、比較自体に移ります。
PDFium.NETは、ファイルをPDFとして作成、修正、および表示するために使用されます。(ポータブル文書形式). それは、ウェブサーバー上で動的なPDF作成を行い、既存のデスクトップアプリケーションまたはウェブアプリケーションにPDFとして保存機能を実装するための高水準なC#/VB.NET APIを提供します。
PDFium.NETの際立った機能は以下のとおりです:
IronPDF .NET PDFライブラリは開発者、特にC#開発者のために作られました。 この素晴らしいPDFライブラリを使えば、.NETプロジェクトにPDF表示機能を簡単に組み込むことができます。
IronPDFはChromiumエンジンを内蔵しており、HTMLを簡単にPDFに変換することができます。 これはPDFファイルを操作するための複雑な低レベルAPIを必要としません。 HTMLドキュメント、JavaScriptファイル、およびASPXウェブページのようなHTMLソースファイルを処理できます。
IronPDFは、カスタムヘッダーやフッター、透かしなどでPDFをカスタマイズできます。 それはまた、開発者にとってPDFテキストの読み取りとグラフィックの抽出を簡単にします。
IronPDF for .NETの際立った機能には以下があります:
Adobe Acrobat Readerを使用せずにPDFファイルを印刷する。
IronPDFライブラリは、以下を含むC#と互換性のあるほぼすべてのオペレーティングシステムおよびフレームワークに対応しています:
Azure、AWS、Docker、Linux、Windows
記事の残りは次のとおりです:
IronPDF C#ライブラリのインストール
PDFium.NET SDK インストール
PDFドキュメントを作成
複数の画像からPDFを作成
デジタル署名 PDF
価格とライセンス
IronPDFライブラリのダウンロードとインストールには様々な方法があります。 最も簡単な方法は次の通りです:
Visual Studio を使用して
開発者コマンドプロンプト
NuGetパッケージを直接ダウンロード
Visual Studioプロジェクトで、"ツール "メニューから、またはソリューション・エクスプローラーでプロジェクトを右クリックし、"NuGetパッケージの管理 "を選択します。 これらのオプションは、以下のスクリーンショットに示されています。
NuGetパッケージマネージャーを開いたら、IronPDFパッケージを検索してインストールします。以下のスクリーンショットに示されています。
IronPDFは、Developer Command Promptからもダウンロードできます。 以下の手順に従ってください:
Install-Package IronPdf
IronPDFは以下のサイトから直接ダウンロードすることもできます。NuGet IronPDFパッケージ. 以下の手順は:
またIronPDF.DLLファイルをIronPDFのパッケージページから直接ダウンロードしてください。.
次の手順を使用して、プロジェクトにIronPDFライブラリを参照します:
「OK」をクリック!
すべて完了しました! IronPDFはダウンロードしてインストールされます。 これからPDFium.NET SDKライブラリのインストール作業を行います。
PDFium.NETは、NuGetパッケージマネージャを使用するか、PDFium Windowsインストーラをダウンロードしてインストールすることができます。
PDFium.NET.SDKを検索してください。 現在のプロジェクトでインストールをクリックしてください。
PM> Install-Package Pdfium.Net.SDK
IronPDFは、PDFファイルを生成するための複数の方法を提供しています。 2つの重要なものを見てみましょう。
IronPDFは、変換を非常に簡単にします。IronPDFのURLレンダリングによるHTMLからPDFへの変換既存のURLを使用します。
次のソースコードを考慮してください。
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
以下のコードスニペットは、HTML文字列を使用してPDFページをレンダリングする方法を示しています。 シンプルなHTMLを使用することも、CSS、画像、およびJavaScriptを組み合わせて使用することもできます。
var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New IronPDF.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
PDF.SaveAs("pixel-perfect.pdf")
' Load external html assets: images, css and javascript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", "e:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
出力は以下の通りです:
画像やテキストオブジェクトを使用して、オンザフライでPDFを生成できます。 ただし、URLやHTML文字列をPDFファイルに変換することはできません。
PDFium.NET を使用して PDF を生成するコードは次のとおりです:
public void CreatePDF()
{
// Step 1: Initialize PDF library and create empty document
// Return value: PdfDocument main class
PdfCommon.Initialize();
var doc = PdfDocument.CreateNew(); // Create a PDF document
// Step 2: Add new page
// Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
// The PDF unit of measure is point. There are 72 points in one inch.
var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
// Step 3: Add graphics and text contents to the page
// Insert image from file using standard System.Drawing.Bitmap class
using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
{
PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
//image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
page.PageObjects.Add(imageObject);
}
// Create fonts used for text objects
PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
// Insert text objects at 7.69"; 11.02" and font size is 25
PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
textObject.FillColor = FS_COLOR.Black;
page.PageObjects.Add(textObject);
// Step 5: Generate page content and save PDF file
// argument: PDF file name
page.GenerateContent();
doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
public void CreatePDF()
{
// Step 1: Initialize PDF library and create empty document
// Return value: PdfDocument main class
PdfCommon.Initialize();
var doc = PdfDocument.CreateNew(); // Create a PDF document
// Step 2: Add new page
// Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
// The PDF unit of measure is point. There are 72 points in one inch.
var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
// Step 3: Add graphics and text contents to the page
// Insert image from file using standard System.Drawing.Bitmap class
using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
{
PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
//image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
page.PageObjects.Add(imageObject);
}
// Create fonts used for text objects
PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
// Insert text objects at 7.69"; 11.02" and font size is 25
PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
textObject.FillColor = FS_COLOR.Black;
page.PageObjects.Add(textObject);
// Step 5: Generate page content and save PDF file
// argument: PDF file name
page.GenerateContent();
doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
Public Sub CreatePDF()
' Step 1: Initialize PDF library and create empty document
' Return value: PdfDocument main class
PdfCommon.Initialize()
Dim doc = PdfDocument.CreateNew() ' Create a PDF document
' Step 2: Add new page
' Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
' The PDF unit of measure is point. There are 72 points in one inch.
Dim page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27F * 72, 11.69F * 72)
' Step 3: Add graphics and text contents to the page
' Insert image from file using standard System.Drawing.Bitmap class
Using logo As PdfBitmap = PdfBitmap.FromFile("e:\site\assets\logo_square.png")
Dim imageObject As PdfImageObject = PdfImageObject.Create(doc, logo, 0, 0)
'image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = New FS_MATRIX(logo.Width * 72 \ 300, 0, 0, logo.Height * 72 \ 300, 1.69 * 72, 10.0 * 72)
page.PageObjects.Add(imageObject)
End Using
' Create fonts used for text objects
Dim calibryBold As PdfFont = PdfFont.CreateFont(doc, "CalibriBold")
' Insert text objects at 7.69"; 11.02" and font size is 25
Dim textObject As PdfTextObject = PdfTextObject.Create("Sample text", 7.69F * 72, 11.02F * 72, calibryBold, 25)
textObject.FillColor = FS_COLOR.Black
page.PageObjects.Add(textObject)
' Step 5: Generate page content and save PDF file
' argument: PDF file name
page.GenerateContent()
doc.Save("e:\site\sample_document.pdf", SaveFlags.NoIncremental)
End Sub
出力は以下の通りです:
IronPDFとPDFiumプロジェクトの出力を比較すると、IronPDFクラスライブラリベースの出力はHTMLレンダリングを使用し、画像サイズを拡大縮小することなく、より良い結果を与えることがわかります。一方、PDFium.NETはIronPDFと同じような出力をしますが、画像の拡大縮小しかしません。 コードからこの行を省略すると
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = New FS_MATRIX(logo.Width * 72 \ 300, 0, 0, logo.Height * 72 \ 300, 1.69 * 72, 10.0 * 72)
出力は次のとおりです:
IronPDFでは、2つ以上のPDFを簡単に結合できます。 マージメソッドを使用すると、各ファイルがカンマで区切られている2つ以上のPDFを結合することができます。 コードは次のようになります:
using IronPdf;
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
using IronPdf;
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
Imports IronPdf
Private html_a = "<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>"
Private html_b = "<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>"
Private Renderer = New IronPDF.ChromePdfRenderer()
Private pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a)
Private pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b)
Private merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b)
merged.SaveAs("Merged.PDF")
PDFium.NETを使用すると、複数のPDFファイルを1つのファイルに結合するだけでなく、ソースファイルから特定のページを選択して1つのPDFドキュメントにまとめることもできます。
以下のコードは、ImportPages
メソッドを使用してどのように行うかを示しています。
public void MergePDF()
{
//Initialize the SDK library.
PdfCommon.Initialize();
//Open and load a PDF document in which other files will be merged
using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
{
//Open one PDF document.
using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
//Open another PDF document.
using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
}
}
public void MergePDF()
{
//Initialize the SDK library.
PdfCommon.Initialize();
//Open and load a PDF document in which other files will be merged
using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
{
//Open one PDF document.
using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
//Open another PDF document.
using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
}
}
Public Sub MergePDF()
'Initialize the SDK library.
PdfCommon.Initialize()
'Open and load a PDF document in which other files will be merged
Using mainDoc = PdfDocument.Load("c:\test001.pdf") ' C# Read source PDF File #1
'Open one PDF document.
Using doc = PdfDocument.Load("c:\doc1.pdf") 'Read PDF File #2
'Import all pages from document
mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
End Using
'Open another PDF document.
Using doc = PdfDocument.Load("c:\doc2.pdf")
'Import all pages from document
mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
End Using
mainDoc.Save("c:\ResultDocument.pdf", SaveFlags.NoIncremental)
End Using
End Sub
現在、最も重要な機能の1つは、PDF文書にデジタル署名することです。 IronPDFはこの機能を提供します。 コードは次のようになります:
using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
Imports IronPdf
' Cryptographically sign an existing PDF in 1 line of code!
Call (New IronPDF.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")
'''*** Advanced example for more control ****
' Step 1. Create a PDF
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>")
' Step 2. Create a Signature.
' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
Dim signature = New IronPDF.Signing.PdfSignature("Iron.pfx", "123456")
' Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png")
'Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature)
'Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf")
PDFium.NET にはPDFドキュメントにデジタル署名する機能がありません。
IronPDFは、簡単なアプリケーションの開発には無料で使用でき、商用利用のためのライセンスはいつでも取得可能です。単一プロジェクトライセンス、単一開発者ライセンス、エージェンシーおよび多国籍企業向けライセンスを提供しています。 また、SaaSおよびOEMの再配布ライセンスとサポートも提供しています。
すべてのIronPDFライセンスには、30日間の返金保証と、1年間のソフトウェアサポートおよびアップグレードが付いています。 最も重要なのは、これは永久ライセンスであるということです。(一回限りの購入). Liteパッケージが利用可能です。 IronPDF製品には一切の定期料金はかかりません。 利用可能なライセンスに関する詳細情報はIronPDF ライセンスページ.
PDFium.NETは永続ライセンスを提供します。 このサポートされているSDKバージョンを登録キーで永遠に使用できます。 ただし、キーはライセンスの購入日または更新日に応じて、一部の特定のSDKバージョンでのみ動作します。 購入日より1年以内、または購入日以前にリリースされた新しい製品バージョンを無料でインストールできます。 PDFium.NETも3つの異なるライセンスパッケージを提供しています:
シングルデベロッパーライセンスは、複数のクライアントのために作業する個々の開発者およびフリーランサー向けに設計されています。
こちらに訪問することができますPDFium.NET 購入ページ完全な価格の詳細について。
IronPDFライブラリは、複雑なAPIなしでPDFドキュメントを作成するための使いやすいライブラリです。内蔵のクロミウムエンジンは、HTML、JS、CSS、JPG、PNG、GIF、SVGのようなオープンスタンダードなドキュメントタイプでピクセルパーフェクトなHTMLからPDFへの変換を可能にします。
PDFium.NET SDKは.NETクラスライブラリであり、開発者が持つほとんどの一般的なニーズを手頃な価格で満たすように設計されています。PDFium.NET SDKを使えば、あなたのアプリケーションはPDFドキュメントを魅力的に表示し、操作することができます。 特別なページオブジェクト編集APIが、このライブラリを特に強力なものにしています。
PDFium.NETのライセンスは、上記の通り、3つのエディションがあります。 シングルプロジェクトライセンスは、1人の開発者向けには720ドルから、3人までの開発者向けには900ドルからご利用いただけます。 これはIronPDFよりいくらか安く、ライトバージョンは低価格からあります。
IronPDFは無制限ライセンスを低価格で提供しています。対照的に、PDFium.NETはプレミアム価格で開発者数無制限の組織ライセンスを提供しています。それに対してIronPDFは10人の開発者が使用できるプロフェッショナルライセンスを提供し、PDFium.NETの10人用の同等ライセンスの約半額です。
上記の例では、IronPDFがPDFium.NETと比較してはるかに少ないコード行数でPDFドキュメントを作成および変更するのを見てきました。 これは開発者の作業負担を軽減し、より生産的な作業を可能にします。IronPDFはほとんどすべてのフォーマットからPDFに変換する複数の方法を提供します。 対照的に、PDFium.NETは、画像やテキストをPDFに変換するようないくつかの方法しか提供していません。
次の言語へ翻訳してください。すべてのIron Software製品のライブラリを購入するわずか2つ分の価格で。 さらに無料試用機能をテストします。
9つの .NET API製品 オフィス文書用