跳至頁尾內容
影片

如何在 C# 中壓縮 PDF

從Ghostscript遷移到IronPDF,將您的.NET PDF工作流程從命令行過程生成和基於字串的開關操作轉移到具型別化、IntelliSense支援的本地.NET API上。 本指南逐步引導您完成遷移過程,消除AGPL-3.0授權風險和外部本地二進制依賴。

術語說明:Ghostscript(由Artifex Software開發)是雙授權的,根據AGPL-3.0或商業授權,而非純GPL。 "GPL"標籤是社區長期使用的開源版本簡稱; 本指南中的所有內容均指Ghostscript的AGPL-3.0版本和Ghostscript.NET包裝器(同樣是AGPL-3.0 / 商業雙重授權)。 從.NET,通常透過該包裝器與Ghostscript交互,它通過P/Invoke調用本地的gsdll32.dll / gswin32c / gswin64c

為何從Ghostscript遷移到IronPDF

Ghostscript面臨的挑戰

Ghostscript是Artifex Software開發的歷史悠久的PostScript/PDF解釋器。 在現代.NET應用程式中運用其會面臨若干實際挑戰:

  1. AGPL-3.0授權限制:Ghostscript本身及Ghostscript.NET包裝器均由Artifex提供的AGPL-3.0或商業授權雙重授權。 AGPL的網路共享條款通常要求您公開較大工作源程式碼的對應部分,包括SaaS/網路使用,除非您購買了商業授權。 這往往排除了封閉源碼或託管.NET應用程式中使用AGPL版本的可能性。

  2. 命令行介面:Ghostscript本質上是一個命令行工具。 從C#使用它意味著生成進程、傳遞字串參數及解析輸出 — 要麼通過對Ghostscript.NET的P/Invoke包裝器。

  3. 外部二進制依賴:您必須分別安裝Ghostscript、管理PATH變數並保持版本跨環境一致。 32位與64位需要不同的本地DLL(gsdll64.dll)。

  4. 無本地HTML到PDF:Ghostscript無法直接將HTML轉換為PDF。 您需要先使用其他工具將HTML轉換為PostScript,然後運行Ghostscript將PostScript轉換為PDF — 這是一個多步驟管道,且有外部依賴。

  5. 複雜的開關語法:操作是通過如-dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=...那樣的命令行開關控制的。 沒有IntelliSense,沒有編譯時檢查。

  6. 錯誤處理:錯誤通過stderr以文字字串形式出現,需要解析而非結構化異常處理。

  7. 進程管理負擔:每次操作都會生成單獨的進程,增加了超時和資源清理的負擔和複雜性。

Ghostscript與IronPDF比較

方面 Ghostscript IronPDF
授權 AGPL-3.0(網路共享)或Artifex商業 商業授權明確
整合 命令行進程生成 原生.NET程式庫
API設計 基於字串的開關 型別化且支援IntelliSense的API
錯誤處理 解析stderr文字 .NET異常
HTML到PDF 不支援(需要外部工具) 內建 Chromium 引擎
依賴關係 外部二進制安裝 自包含NuGet包
部署 配置PATH,複製DLL 僅需新增NuGet引用
執行緒安全 僅進程隔離 設計上具現成的執行緒安全性
現代.NET Ghostscript.NET v1.3.x目標.NET Standard 2.0 .NET Framework 4.6.2+ and .NET 6/7/8/9
異步支援 基於進程 原生async/await

遷移複雜性評估

功能的預估努力程度

功能 遷移複雜性
PDF轉圖像
合併PDF
壓縮PDF
PDF優化
加密
頁面提取
PostScript轉PDF 中-高
自定義開關 中-高

範式轉變

此Ghostscript遷移的根本轉變是從命令行過程執行轉向型別化.NET API調用:

Ghostscript:"將這些字串開關傳遞給外部進程"
IronPDF:"在.NET對象上調用這些方法"

開始之前

前提條件

  1. .NET版本:IronPDF支援.NET Framework 4.6.2+和.NET Core/.NET 5+(包括.NET 6/7/8/9)。 Ghostscript.NET v1.3.x目標.NET Standard 2.0。
  2. 授權金鑰:ironpdf.com取得您的IronPDF授權金鑰
  3. 備份:建立一個遷移工作的分支

識別所有Ghostscript使用

# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .

# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .

# Find package references
grep -r "Ghostscript" --include="*.csproj" .
# Find all Ghostscript.NET references
grep -r "Ghostscript\.NET\|GhostscriptProcessor\|GhostscriptRasterizer\|gsdll" --include="*.cs" .

# Find direct process calls to Ghostscript
grep -r "gswin64c\|gswin32c\|gs\|ProcessStartInfo.*ghost" --include="*.cs" .

# Find package references
grep -r "Ghostscript" --include="*.csproj" .
SHELL

NuGet包變更

# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET

# Install IronPDF
dotnet add package IronPdf
# Remove Ghostscript.NET
dotnet remove package Ghostscript.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

移除Ghostscript依賴

遷移后:

  • 從伺服器中解除安裝Ghostscript
  • 從部署中移除gsdll32.dll / gsdll64.dll
  • 移除Ghostscript的PATH配置
  • 移除任何GhostscriptVersionInfo引用

快速開始遷移

步驟1:更新授權配置

之前(Ghostscript):

Ghostscript在AGPL-3.0下需要依據AGPL條款公開源程式碼或獲得Artifex的商業授權。

之後(IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

步驟2:更新名稱空間的引入

// Before (Ghostscript)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
// Before (Ghostscript)
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using Ghostscript.NET.Rasterizer;

// After (IronPDF)
using IronPdf;
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports Ghostscript.NET.Rasterizer

' After (IronPDF)
Imports IronPdf
$vbLabelText   $csharpLabel

完整API參考

核心類映射

Ghostscript.NET IronPDF 說明
GhostscriptProcessor 各種PdfDocument方法 PDF處理
GhostscriptRasterizer PdfDocument.RasterizeToImageFiles() PDF到圖像
GhostscriptVersionInfo 不適用(不需要) DLL位置
GhostscriptStdIO 不適用(使用異常) I/O處理
進程 + 命令行 ChromePdfRenderer HTML to PDF

命令行開關對映

Ghostscript開關 IronPDF等價 說明
-dNOPAUSE 不適用(不需要) 不在頁面之間暫停
-dBATCH 不適用(不需要) 處理後退出
-dSAFER 不適用(預設) 安全的文件存取
-sDEVICE=pdfwrite 各種PDF方法 輸出PDF
-sDEVICE=png16m RasterizeToImageFiles("*.png", DPI: N) PNG輸出
-sOutputFile=X SaveAs("X") 輸出檔案名
-r300 DPI: 300參數 解析度
-dPDFSETTINGS=/ebook CompressImages(quality: 60) 中等品質
-dFirstPage=N -dLastPage=M CopyPages(new[] {N-1, ..., M-1}) 頁面提取(0索引)
-sOwnerPassword=X SecuritySettings.OwnerPassword 擁有者密碼
-sUserPassword=X SecuritySettings.UserPassword 使用者密碼

程式碼遷移範例

範例1:HTML轉PDF轉換

之前(Ghostscript):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;

class GhostscriptExample
{
    static void Main()
    {
        // Ghostscript cannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then use Ghostscript to convert PS to PDF

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        string psFile = "temp.ps";
        string outputPdf = "output.pdf";

        // This is a workaround - Ghostscript primarily works with PostScript
        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        };

        processor.Process(switches.ToArray());
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.IO;
using System.Text;

class GhostscriptExample
{
    static void Main()
    {
        // Ghostscript cannot directly convert HTML to PDF
        // You need to first convert HTML to PS/EPS using another tool
        // then use Ghostscript to convert PS to PDF

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        string psFile = "temp.ps";
        string outputPdf = "output.pdf";

        // This is a workaround - Ghostscript primarily works with PostScript
        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        };

        processor.Process(switches.ToArray());
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.IO
Imports System.Text

Class GhostscriptExample
    Shared Sub Main()
        ' Ghostscript cannot directly convert HTML to PDF
        ' You need to first convert HTML to PS/EPS using another tool
        ' then use Ghostscript to convert PS to PDF

        Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim psFile As String = "temp.ps"
        Dim outputPdf As String = "output.pdf"

        ' This is a workaround - Ghostscript primarily works with PostScript
        Dim processor As New GhostscriptProcessor()

        Dim switches As New List(Of String) From {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}",
            psFile
        }

        processor.Process(switches.ToArray())
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var renderer = new ChromePdfRenderer();

        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class IronPdfExample
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim renderer As New ChromePdfRenderer()

        Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Ghostscript無法直接將HTML轉換為PDF — 它期望PostScript或PDF輸入,所以HTML工作流需要中間轉換(通常通過wkhtmltopdf或類似工具)。 IronPDF的ChromePdfRenderer提供直接的HTML到PDF渲染,支援CSS、JavaScript和現代網路標準,並使用內嵌的Chromium引擎。請參閱HTML到PDF文件了解更多渲染選項。

範例2:PDF到圖像

之前(Ghostscript):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

class GhostscriptExample
{
    static void Main()
    {
        string inputPdf = "input.pdf";
        string outputPath = "output";

        GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");

        using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputPdf, gvi, false);

            for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
            {
                Image img = rasterizer.GetPage(300, pageNumber);
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
                img.Dispose();
            }
        }
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Rasterizer;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

class GhostscriptExample
{
    static void Main()
    {
        string inputPdf = "input.pdf";
        string outputPath = "output";

        GhostscriptVersionInfo gvi = new GhostscriptVersionInfo("gsdll64.dll");

        using (GhostscriptRasterizer rasterizer = new GhostscriptRasterizer())
        {
            rasterizer.Open(inputPdf, gvi, false);

            for (int pageNumber = 1; pageNumber <= rasterizer.PageCount; pageNumber++)
            {
                Image img = rasterizer.GetPage(300, pageNumber);
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png);
                img.Dispose();
            }
        }
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Rasterizer
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.IO

Class GhostscriptExample
    Shared Sub Main()
        Dim inputPdf As String = "input.pdf"
        Dim outputPath As String = "output"

        Dim gvi As New GhostscriptVersionInfo("gsdll64.dll")

        Using rasterizer As New GhostscriptRasterizer()
            rasterizer.Open(inputPdf, gvi, False)

            For pageNumber As Integer = 1 To rasterizer.PageCount
                Dim img As Image = rasterizer.GetPage(300, pageNumber)
                img.Save($"{outputPath}_page{pageNumber}.png", ImageFormat.Png)
                img.Dispose()
            Next
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

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

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdf = PdfDocument.FromFile("input.pdf");

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdf = PdfDocument.FromFile("input.pdf");

        // One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI: 300);
    }
}
Imports IronPdf
Imports System

Class IronPdfExample
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdf = PdfDocument.FromFile("input.pdf")

        ' One-shot: write every page as PNG matching Ghostscript's -r300 -sDEVICE=png16m
        pdf.RasterizeToImageFiles("output_page*.png", DPI:=300)
    End Sub
End Class
$vbLabelText   $csharpLabel

Ghostscript方法要求定位外部GhostscriptVersionInfo物件並使用1索引的頁碼迭代頁面。 IronPDF的DPI:參數,無需外部本地依賴。 注意,當您處理頁索引時,Ghostscript使用1索引頁碼,而IronPDF使用0索引頁碼(標準.NET慣例)。

範例3:合併PDF檔案

之前(Ghostscript):

// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;

class GhostscriptExample
{
    static void Main()
    {
        string outputPdf = "merged.pdf";
        string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };

        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        };

        switches.AddRange(inputFiles);

        processor.Process(switches.ToArray());
    }
}
// NuGet: Install-Package Ghostscript.NET
using Ghostscript.NET;
using Ghostscript.NET.Processor;
using System.Collections.Generic;

class GhostscriptExample
{
    static void Main()
    {
        string outputPdf = "merged.pdf";
        string[] inputFiles = { "file1.pdf", "file2.pdf", "file3.pdf" };

        GhostscriptProcessor processor = new GhostscriptProcessor();

        List<string> switches = new List<string>
        {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        };

        switches.AddRange(inputFiles);

        processor.Process(switches.ToArray());
    }
}
Imports Ghostscript.NET
Imports Ghostscript.NET.Processor
Imports System.Collections.Generic

Class GhostscriptExample
    Shared Sub Main()
        Dim outputPdf As String = "merged.pdf"
        Dim inputFiles As String() = {"file1.pdf", "file2.pdf", "file3.pdf"}

        Dim processor As New GhostscriptProcessor()

        Dim switches As New List(Of String) From {
            "-dNOPAUSE",
            "-dBATCH",
            "-dSAFER",
            "-sDEVICE=pdfwrite",
            $"-sOutputFile={outputPdf}"
        }

        switches.AddRange(inputFiles)

        processor.Process(switches.ToArray())
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        };

        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class IronPdfExample
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

        var pdfs = new List<PdfDocument>
        {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        };

        var merged = PdfDocument.Merge(pdfs);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class IronPdfExample
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"

        Dim pdfs = New List(Of PdfDocument) From {
            PdfDocument.FromFile("file1.pdf"),
            PdfDocument.FromFile("file2.pdf"),
            PdfDocument.FromFile("file3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfs)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Ghostscript方法需要完整的開關咒語(-dNOPAUSE, -dBATCH, -sDEVICE=pdfwrite)和將文件路徑串聯成字串陣列。 IronPDF的靜態PdfDocument。 了解更多合併和拆分PDF的資訊。


關鍵遷移注意事項

頁面索引轉換

這次遷移中最重要的區別之一是頁面索引。 Ghostscript的-dFirstPage=N / -dLastPage=M開關是1索引。 IronPDF的CopyPages是0索引(標準.NET):

// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
// Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

// IronPDF: 0-indexed page array
var extracted = pdf.CopyPages(new[] {4, 5, 6, 7});
extracted.SaveAs("pages_5_to_8.pdf");
' Ghostscript: -dFirstPage=5 -dLastPage=8 (1-indexed, inclusive)

' IronPDF: 0-indexed page array
Dim extracted = pdf.CopyPages({4, 5, 6, 7})
extracted.SaveAs("pages_5_to_8.pdf")
$vbLabelText   $csharpLabel

AGPL-3.0授權問題

Ghostscript和Ghostscript.NET包裝器均由Artifex提供的AGPL-3.0或商業授權雙重授權。 AGPL-3.0的網路共享條款通常要求公開較大工作源程式碼的對應部分,包括SaaS/網路可存取的部署,除非您持有Artifex的商業授權。 將PDF工作負載遷移到IronPDF之後,移動的部分將不再有此義務; 如果您僅保持Ghostscript以便處理PostScript,那麼Artifex的商業授權涵蓋該部分。 (This is a general summary, not legal advice — consult counsel for your specific deployment.)

沒有外部二進位文件

IronPDF發布為NuGet包。 遷移后移除這些:

  • gsdll64.dll文件
  • 從伺服器解除安裝Ghostscript
  • PATH環境變數配置
  • 程式碼中的GhostscriptVersionInfo引用

PostScript文件

IronPDF不直接處理PostScript(.ps)文件。 如果您的工作流需要PostScript處理,則可選擇:

  1. 在IronPDF處理之前使用其他工具將PostScript轉換為PDF
  2. 將源內容轉換為HTML並使用IronPDF的HTML渲染

效能考量

無進程生成

調用gswin64c.exe(或P/Invoking gsdll64.dll)會導致每次操作都有進程和本地互操作的負擔。 IronPDF作為受管的.NET程式碼在進程中運行:

// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
// Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray());

// IronPDF: in-process method call
var merged = PdfDocument.Merge(pdfs);
' Ghostscript: process or P/Invoke overhead per call
processor.Process(switches.ToArray())

' IronPDF: in-process method call
Dim merged = PdfDocument.Merge(pdfs)
$vbLabelText   $csharpLabel

執行緒安全

IronPDF支援從多個執行緒同時使用PdfDocument。 請參閱IronPDF文件獲得有關並行渲染模式的指導。


遷移檢查表

遷移前

  • 盤點程式碼庫中所有Ghostscript的使用
  • 記錄當前使用的命令行開關
  • 識別任何PostScript處理(需要特殊處理)
  • 檢查AGPL-3.0授權合規狀況
  • 獲得IronPDF授權金鑰
  • 在版本控制中建立遷移分支

程式碼遷移

  • 移除Ghostscript.NET NuGet包:dotnet remove package Ghostscript.NET
  • 安裝IronPDF NuGet包:dotnet add package IronPdf
  • 移除外部Ghostscript二進制依賴
  • 移除GhostscriptVersionInfo和DLL引用
  • GhostscriptProcessor.Process()轉換為IronPDF方法
  • pdf.RasterizeToImageFiles()
  • 將命令行開關替換為API調用
  • 將錯誤處理從stderr解析更新為異常
  • 將1索引頁碼轉換為0索引

測試

  • 測試PDF到圖像轉換
  • 測試PDF合併
  • 測試頁面提取
  • 測試壓縮質量
  • 測試密碼保護
  • 驗證輸出質量符合預期
  • 進行性能基準測試關鍵路徑

部署

  • 從伺服器中解除安裝Ghostscript
  • 移除PATH配置
  • gsdll*.dll文件從部署中移除
  • 驗證應用程式在未安裝Ghostscript的情況下工作

遷移後

  • 取消Artifex商業授權(如果之前持有且不再需要)
  • 更新文件
  • 培訓團隊使用IronPDF API
  • 監控生產環境中的任何問題

請注意Ghostscript是其各自擁有者的註冊商標。 本網站與Artifex Software沒有關聯,也未經其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話