C#でRawPrintからIronPDFに移行する方法
RawPrintからIronPDFへの移行:完全なC#移行ガイド
RawPrintからIronPdfに移行することで、ドキュメントのワークフローが低レベルのプリンタバイト送信から包括的なPDF作成・印刷ソリューションに変わります。 このガイドは、手作業によるプリンタハンドル管理の代わりに、高レベルのAPIを使用してPDFを作成、操作、印刷できるようにする完全な移行パスを、ステップバイステップで提供します。
なぜRawPrintからIronPDFへ移行するのか
RawPrintを理解する
RawPrintは生データを直接プリンターに送信するための実装の集まりです。 従来のプリンタドライバをバイパスしてプリンタに直接コマンドを送信する必要があるアプリケーションには不可欠です。 この機能は、ZPL(Zebra Programming Language)やEPL(Eltron Programming Language)を使用するラベル作成ツールなど、特殊なプリンタを使用するシナリオで特に役立ちます。
RawPrintの強みの一つは、データストリームを直接プリンターに送るというシンプルさです。 Windows特有の環境をターゲットとし、プリンターとの直接通信を必要とする開発者に対し、RawPrintはドライバーやグラフィカル・インターフェースのような中間層をバイパスする効率的な経路を提供します。
しかし、RawPrintはPDFライブラリではありません。 この基本的な制限により、ほとんどの文書生成シナリオでは間違った選択となります。
核心的な問題: PDF が作成できない。
RawPrintには、最新のドキュメントワークフローに適さない顕著な制限があります:
1.PDFは作成しません:RawPrintはデータ送信のみに焦点を当てており、PDFの作成、レンダリング、操作の機能がありません。
2.非常に低レベル: 生のバイトを直接扱うため、開発者はプリンタのコマンド言語を深く理解する必要があります。
3.プラットフォーム固有: Windowsの印刷スプーラーに依存しているため、クロスプラットフォームでの適用が制限されています。
4.ドキュメント処理なし:レンダリング機能のない、単なるバイト送信。
5.限られたコントロール:最小限の印刷ジョブ設定オプション。
RawPrintとIronPDFの比較
| フィーチャー | RawPrint | IronPDF |
|---|---|---|
| 機能について | 生の印刷データを直接プリンタに送信 | 包括的なPDFの作成と操作 |
| ユースケース | ラベルなどの特殊印刷 | 一般的な文書管理と作成 |
| プラットフォーム依存性について | Windows固有 | クロスプラットフォーム |
| 複雑さ | 低レベル、プリンターコマンドの知識が必要 | ハイレベルでユーザーフレンドリーなAPI |
| PDFの作成。 | なし | はい |
| HTMLからPDFを作成する。 | なし | はい |
| URLからPDFを作成する。 | なし | はい |
| PDFを編集/修正する。 | なし | はい |
| PDFのマージ/スプリット | なし | はい |
| 既存のPDFを印刷する。 | はい(生バイト) | はい(高レベルAPI) |
| プリントコントロール | 基本 | フルオプション |
| 理想的な対象</li | プリンタへの直接アクセスのニーズ | ウェブアプリおよびデスクトップアプリにおけるPDF関連タスク |
| 柔軟性 | 生バイト処理のため制限あり | 多機能で広範囲 |
RawPrintとは対照的に、IronPdfはPDFを包括的に扱うための堅牢で多機能なAPIを提供します。 .NET環境で定評のあるIronPDFは、開発者がプラットフォームを超えてPDFを簡単に作成、編集、変換できるようにします。
2025年と2026年まで.NET 10とC# 14の採用を計画しているチームにとって、IronPDFはRawPrintでは提供できないクロスプラットフォームの互換性を提供します。
始める前に
前提条件
1..NET環境: .NET Framework 4.6.2+ または .NET Core 3.1+ / .NET 5/6/7/8/9+. 2.NuGetアクセス:NuGetパッケージをインストールする能力。 3.IronPDFライセンス:ironPdf.comからライセンスキーを取得してください。
NuGetパッケージの変更
# Remove RawPrint
dotnet remove package RawPrint
# Install IronPDF
dotnet add package IronPdf# Remove RawPrint
dotnet remove package RawPrint
# Install IronPDF
dotnet add package IronPdfライセンス構成
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.comRawPrintの使い方を検索する
# Identify allRawPrintusage
grep -r "using RawPrint" --include="*.cs" .
grep -r "Printer\|SendBytesToPrinter" --include="*.cs" .# Identify allRawPrintusage
grep -r "using RawPrint" --include="*.cs" .
grep -r "Printer\|SendBytesToPrinter" --include="*.cs" .完全な API リファレンス
名前空間の変更
// Before:RawPrint(Windows interop)
using System.Runtime.InteropServices;
using System.Drawing.Printing;
// After: IronPDF
using IronPdf;// Before:RawPrint(Windows interop)
using System.Runtime.InteropServices;
using System.Drawing.Printing;
// After: IronPDF
using IronPdf;IRON VB CONVERTER ERROR developers@ironsoftware.comコア API マッピング
| RawPrint | IronPDF | ノート |
|---|---|---|
Printer.SendBytesToPrinter()。 | <コード>pdf.Print()</コード | ハイレベル印刷 |
Printer.OpenPrinter()。 | 該当なし | 不要 |
Printer.ClosePrinter()。 | 該当なし | 自動翻訳 |
Printer.StartDocPrinter()。 | 該当なし | 自動翻訳 |
Printer.WritePrinter()。 | 該当なし | 自動翻訳 |
Printer.EndDocPrinter()。 | 該当なし | 自動翻訳 |
| 該当なし | <コード>ChromePdfRenderer</コード | PDF作成 |
| 該当なし | PdfDocument.Merge()を使用してください。 | PDFのマージ |
| 該当なし | <コード>pdf.ApplyWatermark()</コード></コード | 透かしの追加 |
コード移行の例
例1: HTMLからPDFへの変換
翻訳前(RawPrint):
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class DOCINFOA
{
[MarshalAs(UnmanagedType.LPStr)] public string pDocName;
[MarshalAs(UnmanagedType.LPStr)] public string pOutputFile;
[MarshalAs(UnmanagedType.LPStr)] public string pDataType;
}
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);
[DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool ClosePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);
[DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndDocPrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartPagePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndPagePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);
public static bool SendStringToPrinter(string szPrinterName, string szString)
{
IntPtr pBytes;
Int32 dwCount;
dwCount = szString.Length;
pBytes = Marshal.StringToCoTaskMemAnsi(szString);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "HTML Document";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
//RawPrintcannot directly convert HTML to PDF
// It sends raw data to printer, no PDF generation capability
RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html);
}
}// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public class DOCINFOA
{
[MarshalAs(UnmanagedType.LPStr)] public string pDocName;
[MarshalAs(UnmanagedType.LPStr)] public string pOutputFile;
[MarshalAs(UnmanagedType.LPStr)] public string pDataType;
}
[DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd);
[DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool ClosePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di);
[DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndDocPrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool StartPagePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool EndPagePrinter(IntPtr hPrinter);
[DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten);
public static bool SendStringToPrinter(string szPrinterName, string szString)
{
IntPtr pBytes;
Int32 dwCount;
dwCount = szString.Length;
pBytes = Marshal.StringToCoTaskMemAnsi(szString);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "HTML Document";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
string html = "<html><body><h1>Hello World</h1></body></html>";
//RawPrintcannot directly convert HTML to PDF
// It sends raw data to printer, no PDF generation capability
RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", html);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこの例は、基本的なアーキテクチャの違いを示しています。 RawPrintは、winspool.Drvからの複数のDLLのインポート、手動でのプリンターハンドルの管理(OpenPrinter、StartDocPrinter、WritePrinter、EndDocPrinter、ClosePrinter)、メモリーマーシャリングを含む60行以上のコードを必要とし、それでもPDFを作成することは出来ません。 レンダリング機能はなく、生データをプリンタに送信するだけです。
IronPDFは5行でタスクを達成します: ChromePdfRendererを作成し、RenderHtmlAsPdf()を呼び出し、SaveAs()します。 包括的な例については、HTML to PDF documentationを参照してください。
例2: URLからPDFへの変換
翻訳前(RawPrint):
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
// ... (same DLL imports as above) ...
public static bool SendStringToPrinter(string szPrinterName, string szString)
{
IntPtr pBytes = Marshal.StringToCoTaskMemAnsi(szString);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "Web Page";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pBytes, szString.Length, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
//RawPrintcannot render web pages - only sends raw text/data
// This would just print HTML source code, not rendered content
using (WebClient client = new WebClient())
{
string htmlSource = client.DownloadString("https://example.com");
// This prints raw HTML, not a rendered PDF
RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", htmlSource);
Console.WriteLine("Raw HTML sent to printer (not rendered)");
}
}
}// NuGet: Install-Package System.Drawing.Common
using System;
using System.Net;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
// ... (same DLL imports as above) ...
public static bool SendStringToPrinter(string szPrinterName, string szString)
{
IntPtr pBytes = Marshal.StringToCoTaskMemAnsi(szString);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "Web Page";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pBytes, szString.Length, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
//RawPrintcannot render web pages - only sends raw text/data
// This would just print HTML source code, not rendered content
using (WebClient client = new WebClient())
{
string htmlSource = client.DownloadString("https://example.com");
// This prints raw HTML, not a rendered PDF
RawPrinterHelper.SendStringToPrinter("Microsoft Print to PDF", htmlSource);
Console.WriteLine("Raw HTML sent to printer (not rendered)");
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Render a live website directly to PDF with full CSS, JavaScript, and images
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Website rendered to PDF successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
// Render a live website directly to PDF with full CSS, JavaScript, and images
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
Console.WriteLine("Website rendered to PDF successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comRawPrintはウェブページをレンダリングすることは出来ません。 RawPrintのアプローチでは、HTMLソースをダウンロードし、直接プリンターに送信するため、レンダリングされたコンテンツではなく、生のHTMLコードが印刷されます。 IronPDFのRenderUrlAsPdf()はCSS、JavaScript、画像を含む完全にレンダリングされたウェブページをキャプチャします。 詳しくは、チュートリアルをご覧ください。
例3:ドキュメントのフォーマット
翻訳前(RawPrint):
// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
// ... (same DLL imports) ...
public static bool SendBytesToPrinter(string szPrinterName, byte[] pBytes)
{
IntPtr pUnmanagedBytes = Marshal.AllocCoTaskMem(pBytes.Length);
Marshal.Copy(pBytes, 0, pUnmanagedBytes, pBytes.Length);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "Raw Document";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pUnmanagedBytes, pBytes.Length, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pUnmanagedBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
//RawPrintrequires manual PCL/PostScript commands for formatting
string pclCommands = "\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T";
string text = "Plain text document - limited formatting";
byte[] data = Encoding.ASCII.GetBytes(pclCommands + text);
RawPrinterHelper.SendBytesToPrinter("HP LaserJet", data);
}
}// NuGet: Install-Package System.Drawing.Common
using System;
using System.Drawing.Printing;
using System.Runtime.InteropServices;
using System.Text;
class RawPrinterHelper
{
// ... (same DLL imports) ...
public static bool SendBytesToPrinter(string szPrinterName, byte[] pBytes)
{
IntPtr pUnmanagedBytes = Marshal.AllocCoTaskMem(pBytes.Length);
Marshal.Copy(pBytes, 0, pUnmanagedBytes, pBytes.Length);
IntPtr hPrinter;
if (OpenPrinter(szPrinterName, out hPrinter, IntPtr.Zero))
{
DOCINFOA di = new DOCINFOA();
di.pDocName = "Raw Document";
di.pDataType = "RAW";
if (StartDocPrinter(hPrinter, 1, di))
{
if (StartPagePrinter(hPrinter))
{
Int32 dwWritten;
WritePrinter(hPrinter, pUnmanagedBytes, pBytes.Length, out dwWritten);
EndPagePrinter(hPrinter);
}
EndDocPrinter(hPrinter);
}
ClosePrinter(hPrinter);
Marshal.FreeCoTaskMem(pUnmanagedBytes);
return true;
}
return false;
}
}
class Program
{
static void Main()
{
//RawPrintrequires manual PCL/PostScript commands for formatting
string pclCommands = "\x1B&l0O\x1B(s0p16.66h8.5v0s0b3T";
string text = "Plain text document - limited formatting";
byte[] data = Encoding.ASCII.GetBytes(pclCommands + text);
RawPrinterHelper.SendBytesToPrinter("HP LaserJet", data);
}
}IRON VB CONVERTER ERROR developers@ironsoftware.com翻訳後(IronPDF):。
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<html>
<head>
<style>
body { font-family: Arial; margin: 40px; }
h1 { color: #2c3e50; font-size: 24px; }
p { line-height: 1.6; color: #34495e; }
.highlight { background-color: yellow; font-weight: bold; }
</style>
</head>
<body>
<h1>Formatted Document</h1>
<p>This is a <span class='highlight'>beautifully formatted</span> document with CSS styling.</p>
<p>Complex layouts, fonts, colors, and images are fully supported.</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("formatted.pdf");
Console.WriteLine("Formatted PDF created successfully");
}
}// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<html>
<head>
<style>
body { font-family: Arial; margin: 40px; }
h1 { color: #2c3e50; font-size: 24px; }
p { line-height: 1.6; color: #34495e; }
.highlight { background-color: yellow; font-weight: bold; }
</style>
</head>
<body>
<h1>Formatted Document</h1>
<p>This is a <span class='highlight'>beautifully formatted</span> document with CSS styling.</p>
<p>Complex layouts, fonts, colors, and images are fully supported.</p>
</body>
</html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("formatted.pdf");
Console.WriteLine("Formatted PDF created successfully");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comRawPrintでは、基本的なフォーマットでさえ、PCL/PostScriptコマンド(" \x1B&l0Ox1B(s0p16.66h8.5v0s0b3T" )が必要です。 開発者は、プリンタのコマンド言語を深く理解している必要があります。 IronPdfは書式設定に標準的なHTMLとCSSを使用します。複雑なレイアウト、フォント、色、画像はプリンタ固有の知識がなくても完全にサポートされます。
機能比較の概要
| フィーチャー | RawPrint | IronPDF |
|---|---|---|
| PDFの作成。 | ||
| HTMLからPDFへ | なし | はい |
| URLからPDFへ | なし | はい |
| ゼロから作成 | なし | はい |
| PDF操作 | ||
| PDFのマージ | なし | はい |
| PDFの分割 | なし | はい |
| 透かしの追加 | なし | はい |
| 既存の編集 | なし | はい |
| 印刷。 | ||
| 印刷用PDF | はい(生) | はい(ハイレベル) |
| 印刷ダイアログ | なし | はい |
| 複数部数 | 制限的 | はい |
| DPIコントロール | なし | はい |
| デュプレックス | なし | はい |
| プラットフォーム | ||
| ウィンドウズ | はい | はい |
| Linux | なし | はい |
| macOS | なし | はい |
| ドッカー | なし | はい |
| その他 | ||
| セキュリティ | なし | はい |
| デジタル署名 | なし | はい |
| PDF/A | なし | はい |
移行後の新機能
IronPDFに移行することで、RawPrintでは提供できない機能を得ることができます:
PDFマージ
var pdfs = pdfFiles.Select(f => PdfDocument.FromFile(f)).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("complete.pdf");var pdfs = pdfFiles.Select(f => PdfDocument.FromFile(f)).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("complete.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com設定で印刷
var pdf = PdfDocument.FromFile("report.pdf");
pdf.Print(new PrintOptions
{
PrinterName = "HP LaserJet",
NumberOfCopies = 2,
DPI = 300,
GrayScale = false
});var pdf = PdfDocument.FromFile("report.pdf");
pdf.Print(new PrintOptions
{
PrinterName = "HP LaserJet",
NumberOfCopies = 2,
DPI = 300,
GrayScale = false
});IRON VB CONVERTER ERROR developers@ironsoftware.com1つのワークフローで作成と印刷ができます。
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Invoice #12345</h1>
<p>Customer: John Doe</p>
<p>Amount: $150.00</p>
");
// Print directly
pdf.Print("HP LaserJet");
// Or save first
pdf.SaveAs("invoice.pdf");var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<h1>Invoice #12345</h1>
<p>Customer: John Doe</p>
<p>Amount: $150.00</p>
");
// Print directly
pdf.Print("HP LaserJet");
// Or save first
pdf.SaveAs("invoice.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.com移行チェックリスト
移行前
- [
SendBytesToPrinter,OpenPrinter等)。 - [アプリケーションで使用されるプリンタ名を文書化してください。
- [統合可能な外部のPDF作成コードに注意してください。
- [ironpdf.comからIronPDFライセンスキーを入手してください。
コードの更新
- [ ] RawPrintパッケージを削除して下さい:
dotnet remove パッケージ RawPrint - [ ] IronPdfパッケージをインストールしてください:
dotnet add package IronPdf. - [ ] 生の印刷を
pdf.Print()に置き換えてください。 - [手動ハンドル管理(
OpenPrinter,ClosePrinterなど)を削除してください。) - [PDF の作成と印刷を単一のワークフローに統合する。
- [アプリケーション起動時のライセンス初期化機能の追加
テスティング
- [ターゲットプリンターへの印刷テスト
- [印刷品質の確認
- [複数コピーのテスト
- [テスト無音印刷
- [必要であれば、クロスプラットフォームの検証もお願いします。
結論
RawPrintとIronPdfのどちらを選択するかは、開発者が達成したい具体的なタスクや目標に大きく依存します。 RawPrintがプリンタとの直接通信(ZPLやEPLを使用するラベルプリンタなど)に必要な低レベルで専門的な利点を提供する一方、IronPDFは一般的なPDF処理や文書作成タスクに適した汎用性の高い高レベルのソリューションを提供します。
この移行における主な変更点は以下のとおりです: 1.アーキテクチャ:低レベルのバイト転送 → 高レベルのPDF API 2.複雑さ: DLLインポートを含む60行以上 → 5行のコード 3.機能:印刷のみ → 作成、編集、マージ、分割、印刷 4.フォーマット:マニュアルPCL/PostScriptコマンド → 標準HTML/CSS 5.プラットフォーム:Windowsのみ → クロスプラットフォーム 6.ハンドル管理:手動 (OpenPrinter/ClosePrinter) → 自動 7.URLレンダリング:生のHTMLソース → 完全にレンダリングされたページ 8.印刷コントロール: 基本 → フルオプション (コピー、DPI、両面)
開発者は、技術的なニーズやプロジェクトの制約に沿ったライブラリを戦略的に選択することができ、アプリケーションの効率性と文書処理の堅牢性を確保することができます。
IronPDFドキュメント、チュートリアル、印刷ガイドをご覧いただき、RawPrintへの移行を加速させてください。






