PDFからHTMLへの変換

PDF(Portable Document Format)は、クロスプラットフォームのデータおよび情報共有に広く使用されているドキュメント形式の1つです。その独自の機能の1つには、Adobeの仕様に従って、アプリケーションを使用して任意のプラットフォームで表示するときに、ドキュメントの忠実度が損なわれないことが含まれます。さらに、HTML(HyperText Markup Language)もWebページ開発の主要なファイル形式であり、ほとんどのWebブラウザーはこの形式をサポートしています。ただし、PDFは、ドキュメントのフォーマットを失うことなく、どのデバイスでも簡単に表示できるため、広く受け入れられています。したがって、この記事では、.NETAPIを使用してHTMLファイルをPDF形式に変換する手順について説明します。

HTMLをPDFに変換するC#API

変換操作を実行するには、まず、システムにAspose.PDF for.NETをインストールする必要があります。 APIは、NuGetライブラリで利用できます。パッケージマネージャーコンソールで次のコマンドを実行してインストールしてください。

Install-Package Aspose.Pdf

インストールが完了すると、ソリューションエクスプローラーのPackagesフォルダーの下にAspose.PDFfor.NETが表示されます。

C#でHTMLをPDFに変換する

以下に、C#を使用してHTMLをPDFに変換する方法の手順を示します。

  1. Licenseクラスのインスタンスを作成して、PDFファイル生成プロセス中の制限を取り除きます。
  2. 入力HTMLベースURLを引数として[HtmlLoadOptions(…)](https:/ /apireference.aspose.com/pdf/net/aspose.pdf/htmlloadoptions)コンストラクター。
  3. Documentクラスのオブジェクトを初期化し、HtmlLoadOptionsを渡します。コンストラクターへの引数としてのpdf/htmlloadoptions)オブジェクト。
  4. DocumentオブジェクトのSave(…)メソッドを呼び出し、出力をPDF形式でレンダリングします。
// ライセンスを開始するためのオブジェクトを作成します
Aspose.Pdf.License license = new Aspose.Pdf.License();

// ライセンスファイルのパスを指定します
license.SetLicense("/Downloads/Conholdate.Total.NET.lic");

// HtmlLoadOptionsクラスのインスタンスを作成します
Aspose.Pdf.HtmlLoadOptions htmlLoadOptions = new Aspose.Pdf.HtmlLoadOptions("User/Documents/");

// Documentオブジェクトを作成し、入力HTMLファイルパスを提供します
Aspose.Pdf.Document document = new Aspose.Pdf.Document("/Documents/input.html", htmlLoadOptions);

// 結果のHTMLをPDF形式で保存します
document.Save("/Documents/Converted.pdf");

変換中にフォントを埋め込む

ほとんどのHTMLページはフォント(ローカルフォルダのigフォント、Google Fontsなど)を使用することが多く、ページのレイアウトを維持するために、レンダリングプロセス中に同じフォントを埋め込む必要があります。したがって、結果のドキュメントへのフォントの埋め込みを制御するには、IsEmbedFontsプロパティを使用する必要があります。

// 変換中にフォントを埋め込む
HtmlLoadOptions options = new HtmlLoadOptions {IsEmbedFonts = true};

Aspose.PDFの測定単位はポイントです。そして、A3のサイズは297×420ミリメートルまたは11.69×16.54インチであることがわかっています。したがって、寸法は842×1190ポイントに四捨五入されます。次のコードスニペットでは、結果のドキュメントのページサイズをA3に、ページの向きを横向きに調整しています。

// ページサイズをA3に、ページの向きを横向きに設定します
HtmlLoadOptions options = new HtmlLoadOptions(url)
{
  PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
};

WebページをPDFに変換する

HTMLファイルの変換以外に、WebページをPDF形式に直接変換する必要がある場合もあります。したがって、この要件を達成するために、最初にHttpClientインスタンスを使用してリモートWebページのコンテンツをフェッチし、Streamオブジェクトを作成してから、StreamインスタンスをDocumentオブジェクトに渡します。 Streamのコンテンツが必要な理由は、DocumentインスタンスがファイルまたはSteamオブジェクトのみを受け入れるためです。

次のセクションでは、C#を使用してWebページをPDFに変換する方法について説明します。

  1. HttpClientオブジェクトを使用してページのコンテンツを読み取ります。
  2. HtmlLoadOptionsオブジェクトをインスタンス化し、ベースURLを設定します。
  3. Documentオブジェクトを初期化し、ストリームオブジェクトとHtmlLoadOptionsインスタンスを引数として渡します。
  4. DocumentクラスからSave(String)メソッドを呼び出して、出力を生成します。
public static void ConvertHTMLtoPDFAdvanced_WebPage()
{
    const string url = "https://en.wikipedia.org/wiki/Aspose_API";
    
    // ページサイズA3と横向きを設定します。 
    HtmlLoadOptions options = new HtmlLoadOptions(url)
    {
        // ページサイズを設定する
        PageInfo = {Width = 842, Height = 1191, IsLandscape = true}
    };
    
    // Documentオブジェクトのインスタンスを作成します
    Document pdfDocument= new Document(GetContentFromUrlAsStream(url), options);
    
    // 結果を保存します
    pdfDocument.Save(_dataDir + "html_test.PDF");
}

private static Stream GetContentFromUrlAsStream(string url, ICredentials credentials = null)
{
    
    using (var handler = new HttpClientHandler { Credentials = credentials })
    using (var httpClient = new HttpClient(handler))
    {
        // ストリームインスタンスで結果をフェッチして返す
        return httpClient.GetStreamAsync(url).GetAwaiter().GetResult();
    }
}

完全なHTMLを1ページにレンダリングする

HTMLからPDFへの変換中、結果のファイルの長さは、入力されたHTMLドキュメントのコンテンツの長さに応じて異なります。したがって、入力HTMLが複数のページで構成されている場合、結果のファイルも複数のページにまたがります。ただし、出力を単一のPDFページに限定する場合があります。この要件を達成するために、HtmlLoadOptionsクラスのIsRenderToSinglePageプロパティを使用できます。

以下に示すのは、C#を使用して単一のPDFページに完全なHTMLコンテンツをレンダリングするためのコードスニペットです。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NETにアクセスしてください。
// HtmlLoadOptionsオブジェクトを初期化します
HtmlLoadOptions options = new HtmlLoadOptions();

// レンダリングを単一ページのプロパティに設定します
options.IsRenderToSinglePage = true;

// ドキュメントソースのHTMLコンテンツをロードする
Document pdfDocument= new Document("/Documents/HTMLToPDF.html", options);

// 結果のPDFファイルを保存します
pdfDocument.Save("/Documents/MyRenderContentToSamePage.pdf");

無料ライセンスを取得する

無料の一時ライセンスに、評価の制限なしでAPIを試すようにリクエストできます。

結論

この記事では、.NETAPIを使用してHTMLファイルをPDF形式に変換する方法について学習しました。 Aspose.PDF for .NETが提供するその他のエキサイティングな機能についてさらに詳しく知りたい場合は、主な機能ページにアクセスしてください。例の完全なセットは、GitHubリポジトリにあります。

簡単なヒント

また、APIによって提供される機能をすばやく確認するための無料のオンラインアプリケーションも開発しました。したがって、Aspose.PDF Conversion Appをチェックして、HTMLファイルをPDF形式に変換することができます。さらに、他のさまざまなファイル形式を使用して、変換要件を達成することもできます。