IRONSOFTWAREHOME
ビデオ

How to Create a PDF Viewer in VB .NET | IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

Winnovative は、.NET PDF 生成の分野では、C# アプリケーションの HTML から PDF への変換機能を提供することで知られています。 しかし、長期間にわたるClassicライブラリは古い独自のレンダリングエンジンに依存しており、最新のCSS(Grid、最近のFlexbox)および最新 for JavaScript(ES2017+)のサポートは、最新のChromiumブラウザに比べて一貫性がありません。 ベンダーの反応は、既存のWinnovative顧客がどちらにせよコード移行に直面することを意味する、即ち、Winnovative.Pdf.Nextという別のChromium系製品を発送することで、Classicをその場でアップグレードするのではなく解決した。

このガイドは、WinnovativeからIronPDFへの移行パスを提供し、この移行を評価する.NET開発者のためのステップバイステップの指示、コード比較、実用例を示します。

なぜWinnovativeから移行するのですか?

WinnovativeのClassicライブラリは、最新のWeb標準に更新されていない古い独自のエンジンを使用しています:

一貫しないCSS Grid / 最新のFlexbox: CSS Gridや最近のFlexbox機能に依存するレイアウトは、最新のChromiumブラウザに比べて不正確にレンダリングされる可能性があります。

最新 for JavaScript互換ギャップ: ES2017+機能(アロー関数、async/await、クラス)が確実には実行されず、React、Vue、および他の最新フレームワークに影響を与えます。

遅いケイデンス: Classicエンジンはレンダリングエンジンの更新をまれにしか受け取りません; ベンダーの答えは、Classicを機能フリーズしたままにし、別のWinnovative.Pdf.Next Chromium系製品を発送することだった。

2製品移行負担:Winnovative.Pdf.Next)の下にあり、Classicとはバイナリ互換性がない。

フォントレンダリングエッジケース: Webフォントとカスタムタイポグラフィは時折、最新のブラウザと異なりレンダリングされます。

実世界への影響

Winnovative Classicで一貫しない可能性のある最新のCSSとJavaScript:

<!-- CSS Grid can render inconsistently inWinnovative Classic-->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</div>

<!-- Modern JavaScript may not execute reliably in Classic -->
<script>
const items = data.map(item => item.name);
const result = await fetchData();
class Report { }
</script>
HTML

IronPDFとWinnovativeの比較:機能の比較

アーキテクチャの違いを理解することは、技術的な意思決定者が移行への投資を評価するのに役立ちます:

アスペクトWinnovative ClassicIronPDF
レンダリングエンジン古い独自エンジンChromium(現在)
CSSグリッド一貫しないフルサポート
Flexbox(フレックスボックスエッジケースで一貫しないフルサポート
JavaScript(JavaScript最新のJSに制限ありES2024
ブートストラップ 5レイアウト問題フルサポート
追い風CSS制限的フルサポート
リアクト/ビューSSR問題点動作します
ウェブフォント一部のセットアップで信頼性がありませんフルサポート
更新情報頻度月次
価格(開発者あたり)$450 デプロイ / $1,200 再配布可能ironpdf.com/pricing をご覧ください

クイックスタートWinnovativeからIronPDFへの移行

これらの基本的なステップを踏めば、すぐにでも移行を開始できます。

ステップ 1: NuGet パッケージを置き換える

すべてのWinnovativeパッケージを削除します(実際にプロジェクトで使用しているものを確認してください):

# Remove Winnovative (Classic + related utilities)
dotnet remove package Winnovative.HtmlToPdf
# Also remove any of these your project references:
# dotnet remove package Winnovative.PdfMerge
# dotnet remove package Winnovative.PdfSecurity
# dotnet remove package Winnovative.Pdf.Next.Core
# dotnet remove package Winnovative.Client
SHELL

IronPDFをインストールします:

# Install IronPDF
dotnet add package IronPdf
SHELL

ステップ 2: 名前空間の更新

Winnovativeの名前空間をIronPDFの名前空間に置き換えます:

// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;

// After (IronPDF)
using IronPdf;

ステップ 3: ライセンスの初期化

アプリケーション起動時のライセンス初期化を追加します:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

コード移行の例

HTML を PDF に変換する

最も一般的な使用例は、これら for .NET PDFライブラリのAPIの違いを示すものです。

革新的なアプローチ:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        
        Console.WriteLine("PDF created successfully");
    }
}
C#

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully");
    }
}

Winnovativeには、SaveAs()メソッドを使用する。

高度なHTMLからPDFへのシナリオについては、HTMLからPDFへの変換ガイドをご覧ください。

URLをPDFに変換する

URLからPDFへの変換も同様のパターンがあります。

革新的なアプローチ:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);
        
        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
        
        Console.WriteLine("PDF from URL created successfully");
    }
}
C#

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        
        // Save to file
        pdf.SaveAs("webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully");
    }
}

Winnovativeは、手動で保存する必要があるバイトを返すConvertUrl()を使用する。 IronPDFは、便利のためにRenderUrlAsPdf()を提供する。

認証とカスタムヘッダーオプションについては、URL to PDF documentationを参照してください。

ヘッダーとフッターの追加

ヘッダーとフッターには、アーキテクチャ上の大きな違いがあります。 WinnovativeはTextElementオブジェクトを使用したプログラム要素ベースのアプローチを使用し、IronPDFはプレースホルダー トークンを使用したHTMLベースのヘッダーを使用する。

革新的なアプローチ:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Enable header
        htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
        htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;
        
        // Add header text
        TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
        htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);
        
        // Enable footer
        htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
        htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;
        
        // Add footer with page number
        TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
        htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("document.pdf", pdfBytes);
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}
C#

IronPDFのアプローチ:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 12
        };
        
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("document.pdf");
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}

Winnovativeは、&P;プレースホルダーを使用する必要がある。 IronPDFは、{total-pages}のような直感的なプレースホルダーを使用する。

完全なCSSスタイルを持つHTMLベースのヘッダーについては、headers and footers documentationを参照してください。

革新的なAPIからIronPDFへのマッピングリファレンス

このマッピングは、APIと同等のものを直接示すことで、移行を加速します:

ウィノベイティブクラスIronPDF 同等物
HtmlToPdfConverterChromePdfRenderer
PdfDocumentPdfDocument
PdfDocumentOptionsRenderingOptions
PdfHeaderOptionsHtmlHeaderFooter
PdfFooterOptionsHtmlHeaderFooter
TextElementHtmlFragment のHTML
ImageElementHTML <img>

メソッドマッピング

ウィノベイティブメソッドIronPDF メソッド
ConvertUrl(url)RenderUrlAsPdf(url)
ConvertUrlToFile(url, path)RenderUrlAsPdf(url).SaveAs(path)
ConvertHtml(html, baseUrl)RenderHtmlAsPdf(html)
ConvertHtmlToFile(html, path)RenderHtmlAsPdf(html).SaveAs(path)
ConvertHtmlFile(path)RenderHtmlFileAsPdf(path)
MergePdf(streams)PdfDocument.Merge(pdfs)
AppendPdf(pdf)pdf1.AppendPdf(pdf2)

オプション マッピング

ウィノベイティブオプションIronPDF オプション
PdfPageSize.A4PaperSize = PdfPaperSize.A4
PdfPageSize.LetterPaperSize = PdfPaperSize.Letter
PdfPageOrientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
PdfPageOrientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
TopMargin = 20MarginTop = 20
BottomMargin = 20MarginBottom = 20
LeftMargin = 15MarginLeft = 15
RightMargin = 15MarginRight = 15
ShowHeader = trueHtmlHeader プロパティを設定する
ShowFooter = trueHtmlFooter プロパティを設定する
JavaScriptEnabled = trueEnableJavaScript = true
ページ番号 &p;ページ番号 {page}
総ページ &P;総ページ {total-pages}

一般的な移行の問題と解決策

課題1: CSSレイアウトが違って見える

症状: Winnovativeでは問題なく見えたレイアウトが、IronPDFでは異なって見えます。

原因: Winnovative Classicの古い独自エンジンは、開発者が対策したレンダリングの癖があります。 IronPDFの最新のChromiumエンジンはこれらを正確にレンダリングします。

解決策: Winnovative特有のCSSハックを削除し、標準的なCSSを使用する:

// Clean up legacy CSS
string cleanedHtml = html
    .Replace("-webkit-flex", "flex")
    .Replace("display: -webkit-box", "display: flex");

課題 2: JavaScript が実行されない

症状: PDFに動的コンテンツが表示されない。

原因: JavaScriptの待機オプションを明示的に設定する必要がある。

ソリューション:

renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);

課題3: ベース URL が機能しない

症状: 画像やCSSの相対URLが解決されない。

原因: IronPDFは明示的なベースURL設定が必要です。

ソリューション:

renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");

課題4:さまざまな改ページ

症状: Winnovativeとは異なる箇所でコンテンツが壊れる。

原因: レンダリングエンジンによって、改ページの扱いが異なります。

**解決策:**明示的なCSSの改ページコントロールを使用する:

/* Control page breaks explicitly */
.no-break {
    page-break-inside: avoid;
}
.page-break-before {
    page-break-before: always;
}
.page-break-after {
    page-break-after: always;
}
Text

課題5:フォントが違って見える

**症状:**テキストが予想と異なるフォントで表示される。

原因: IronPDFはシステムフォントを使用しています; ウェブフォントは明示的な読み込みが必要です。

ソリューション:

<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

body {
    font-family: 'Roboto', Arial, sans-serif;
}
</style>
HTML

革新的な移行チェックリスト

マイグレーション前のタスク

コードベースを監査し、Winnovative の使用法をすべて特定します:

# Find all Winnovative references
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
SHELL

ページサイズ、マージン、ヘッダー/フッター設定など、現在の設定を文書化すること。 削除可能なCSS回避策(webkit接頭辞、フロートベースのグリッド)を特定すること。 JavaScriptの互換性要件に注意してください。

コード更新タスク

1.NuGetパッケージの削除 2.IronPDFNuGet パッケージをインストールします 3. 名前空間のインポートをIronPdfへすべて更新する 4. ChromePdfRendererに置き換える 5. RenderHtmlAsPdf()に変換する 6. RenderUrlAsPdf()に変換する 7. ページサイズ/向きの設定をRenderingOptionsに更新する 8.マージン設定の変換 9. TextHeaderFooterに移行する 10. ページ番号プレースホルダーを{total-pages}に更新する 11.起動時にIronPDFライセンスの初期化を追加する

移行後のテスト

移行後、これらの点を検証してください:

  • 基本的なHTMLからPDFへの変換テスト
  • URLからPDFへの変換テスト
  • CSSグリッドレイアウトが正しくレンダリングされることを確認する
  • Flexboxレイアウトが正しくレンダリングされることを確認する
  • JavaScriptを多用するページを最新のES6+構文でテストする。
  • Bootstrap 5との互換性の確認
  • ヘッダー/フッターレンダリングのテスト
  • 改ページの確認
  • PDF出力品質の比較

クリーンアップタスク

  • Winnovative CSSの回避策(webkit接頭辞)の削除
  • ES5 JavaScriptを最新の構文に更新
  • フロートベースのグリッドのフォールバックを削除
  • ドキュメントの更新

IronPDFに移行する主な利点

WinnovativeからIronPDFに移行することで、いくつかの重要な利点が得られました:

**最新のレンダリング エンジン:**IronPDFは最新の Chromium エンジンを使用し、CSS3、CSS グリッド、Flexbox、ES2024 JavaScript を完全にサポートします。 Bootstrap 5、Tailwind CSS、React/Vueなどの最新のフレームワークが正しくレンダリングされること。

**簡略化されたAPI:**プログラム的なTextElement位置決めに代わり、HTMLベースのヘッダーとフッターを使用。 &p;構文に代わる。 組み込みのSaveAs()メソッドにより、手動のバイト処理が不要になります。

アクティブな開発: IronPDFの毎月の更新により、現在および今後 for .NETバージョンとの互換性が確保されています。

回避策のない最新の CSS: CSS グリッド、フレックスボックス、最新のタイポグラフィは、WebKit プレフィックスやフロートベースのフォールバックなしで動作します。

**最新 for JavaScript:**矢印関数、async/await、クラス、モジュールなどの ES6+ 機能が正しく実行されます。

ご注意: Winnovative はそれぞれの所有者の登録商標です。 このサイトは、Winnovative Softwareと提携、承認、または後援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。