IRONSOFTWAREHOME
PDF工具

如何在沒有Adobe Pro的情況下為PDF設置密碼

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

開源的HTML轉PDF程式庫消除了授權費用,但需要大量的開發時間和維護努力。 相比之下,IronPDF提供商業解決方案,具有Chrome渲染、完整功能和專業支援,通常能降低.NET團隊的總持有成本。

C#的開源HTML轉PDF選項有哪些?

.NET 生態系統提供了數個開源程式庫來進行HTML轉PDF轉換。 每個都有其獨特的優勢和限制,需要仔細評估。 這些程式庫在不同的文件格式上處理不同的CSS支援等級,這影響到開發時間和維護成本。

為什麼PuppeteerSharp是最受歡迎的開源選擇?

Puppeteer Sharp文件主頁的截圖,顯示專案描述、包括.NET Standard 2.0支援的先決條件、指向GitHub和Stack Overflow的有用連結,以及瀏覽器自動化的基本使用範例

PuppeteerSharp是用於在C#中將HTML轉換為PDF的廣泛使用的開源選項。 作為谷歌Puppeteer的.NET移植,它使用無頭Chromium來渲染網頁內容,並完全支援包括CSS3和JavaScript等現代技術。 轉換過程使用基於Chrome的引擎來保持網頁標準的忠實度

從生產力的角度來看,PuppeteerSharp要求開發者理解瀏覽器自動化概念,這給PDF生成任務增加了複雜性。 開發者入門通常需要2-3天,而更簡單的替代方案則只需幾個小時。 您的團隊在擴展瀏覽器實例時必須仔細管理記憶體使用

如何使用PuppeteerSharp實現基本的HTML轉PDF轉換?

using PuppeteerSharp;
using System.Threading.Tasks;
using System.Diagnostics;

class Program
{
    static async Task Main(string[] args)
    {
        // Track initialization time for ROI calculations
        var stopwatch = Stopwatch.StartNew();
        
        // DownloadChromiumbrowser (150MB, one-time)
        var browserFetcher = new BrowserFetcher();
        await browserFetcher.DownloadAsync();
        
        // Launch browser and convert HTML string
        using var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
        { 
            Headless = true,
            Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" } // Required for Linux
        });
        
        using var page = await browser.NewPageAsync();
        
        // HTML content with CSS styling and JavaScript
        var html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .header { color: #2563eb; font-size: 24px; }
                    .content { margin: 20px; }
                    table { width: 100%; border-collapse: collapse; }
                    th, td { padding: 10px; border: 1px solid #ddd; }
                </style>
            </head>
            <body>
                <div class='header'>Invoice #12345</div>
                <div class='content'>
                    <p>Generated on: <span id='date'></span></p>
                    <table>
                        <tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
                        <tr><td>Service A</td><td>10</td><td>$1,000</td></tr>
                    </table>
                    <script>
                        document.getElementById('date').innerText = new Date().toLocaleDateString();
                    </script>
                </div>
            </body>
            </html>";
        
        await page.SetContentAsync(html);
        
        // Wait for JavaScript execution
        await page.WaitForSelectorAsync("#date", new WaitForSelectorOptions { Timeout = 5000 });
        
        await page.PdfAsync("output.pdf", new PdfOptions 
        { 
            Format = PaperFormat.A4,
            PrintBackground = true,
            MarginOptions = new MarginOptions { Top = "20px", Bottom = "20px" }
        });
        
        stopwatch.Stop();
        Console.WriteLine($"PDF generation took: {stopwatch.ElapsedMilliseconds}ms");
    }
}
C#

PuppeteerSharp擅長渲染具有動態內容的複雜網頁。 然而,運營負擔依然顯著:Chromium下載使部署變得複雜,記憶體使用每個實例超過200MB,並且錯誤處理需要瀏覽器自動化專業知識

其他開源PDF程式庫的限制是什麼?

PDF檢視器顯示#12345號發票,日期為2025年06月11日,標題下方為空白白色內容區域,說明常見的CSS渲染失敗,僅顯示文件標題,而正文內容未載入

wkhtmltopdf說明了開源採用的風險。 儘管被廣泛使用,但2024年7月wkhtmltopdf GitHub組織被正式存檔且不再維護。 該專案積累了未修補的CVE漏洞,與現代Linux發行版不相容,並且支援CSS3有限。

DinkToPdf,一個wkhtmltopdf的.NET包裝器,繼承了這些問題並增加了複雜性。 團隊可以預期需要不斷努力來解決渲染問題,這些問題商業解決方案會自動處理。

**PDFSharp/PdfSharp**提供輕量級功能,但需要大量開發者的努力:

// PDFsharp example - manual HTML parsing required
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

var document = new PdfDocument();
var config = new PdfGenerateConfig()
{
    PageSize = PageSize.A4,
    MarginBottom = 40,
    MarginTop = 40
};

// Very limited HTML/CSS support
var html = "<h1>Basic Title</h1><p>Simple paragraph only</p>";
var pdf = PdfGenerator.GeneratePdf(html, config);
pdf.Save("basic-output.pdf");

IronPDF如何簡化PDF生成?

IronPDF C#程式庫主頁展示即時HTML轉PDF轉換程式碼範例,帶語法高亮,特色

IronPDF通過其整合的Chrome渲染引擎提供完整的HTML轉PDF轉換。 不同於開源選項,它提供簡化的API來處理無需外部依賴的複雜情境。 該程式庫整合了Visual Studio並支援當前的.NET版本

從管理的角度看,IronPDF通過以下方式提供了可衡量的回報:

為什麼IronPDF的API設計對開發者更友好?

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Initialize renderer with sensible defaults
        var renderer = new ChromePdfRenderer();
        
        // Configure rendering options for professional output
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitFor.RenderDelay(100); // Ensure JS execution
        
        // HTML with advanced CSS and JavaScript
        var html = @"
            <html>
            <head>
                <style>
                    @page { size: A4; margin: 0; }
                    body { 
                        font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
                        margin: 0;
                        padding: 20px;
                    }
                    .invoice-header { 
                        background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
                        color: white;
                        padding: 30px;
                        border-radius: 8px;
                        margin-bottom: 30px;
                    }
                    table { 
                        width: 100%; 
                        border-collapse: collapse;
                        margin-top: 20px;
                    }
                    th { 
                        background-color: #f3f4f6;
                        font-weight: 600;
                        text-align: left;
                    }
                    th, td { 
                        padding: 12px 15px;
                        border-bottom: 1px solid #e5e7eb;
                    }
                    .total-row {
                        font-weight: bold;
                        background-color: #f9fafb;
                    }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Professional Invoice</h1>
                    <p>Generated with IronPDF</p>
                </div>
                <table>
                    <thead>
                        <tr><th>Item</th><th>Quantity</th><th>Unit Price</th><th>Total</th></tr>
                    </thead>
                    <tbody>
                        <tr><td>Consulting Service</td><td>40 hours</td><td>$150</td><td>$6,000</td></tr>
                        <tr><td>Development</td><td>80 hours</td><td>$125</td><td>$10,000</td></tr>
                        <tr class='total-row'><td colspan='3'>Total</td><td>$16,000</td></tr>
                    </tbody>
                </table>
                <script>
                    console.log('PDF generated at ' + new Date().toISOString());
                </script>
            </body>
            </html>";
        
        // Generate PDF with one method call
        var pdf = renderer.RenderHtmlAsPdf(html);
        
        // Add professional touches
        pdf.AddWatermark("<h2 style='color:red;opacity:0.5'>CONFIDENTIAL</h2>");
        pdf.AddTextFooter("Page {page} of {total-pages}", IronPdf.Font.FontFamily.Helvetica, 8);
        
        // Apply security
        pdf.SecuritySettings.MakeReadOnly("owner-password");
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        
        pdf.SaveAs("professional-invoice.pdf");
        
        // Additional conversion methods
        var urlPdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_43___");
        var filePdf = renderer.RenderHtmlFileAsPdf("template.html");
    }
}

IronPDF的直觀API將學習曲線從幾天縮短到幾小時。 實現自動處理複雜的渲染情境,包括帶頁碼的標題數位簽名PDF/A合規,和表單建立

PDF轉換能力的主要差異是什麼?

功能PuppeteerSharpwkhtmltopdfDinkToPdfPDFSharpIronPDF
CSS3支援完整限制的限制的最小完整
JavaScript
安裝~150MB~40MB~40MB~5MB~20MB
依賴ChromiumQt WebKitQt WebKitNoneNone
API複雜度中等
PDF/A
Headers/Footers手動CLICLI手動內建
支持
設置時間4-6小時2-3小時2-3小時1-2小時<30 min

開源和商業解決方案的總成本如何比較?

工程團隊通常集中在授權費用上而忽略了總持有成本。 以下說明了基於常見開發者費率的中型團隊的典型成本組成。

開源解決方案的隱性成本是什麼?

  • 初始實施:40-80小時 × $100/小時 = $4,000-$8,000
  • 每月維護:10-20小時 × $100/小時 × 12 = $12,000-$24,000
  • 生產問題:2-3事件 × 8小時 × $150/小時 = $2,400-$3,600
  • 安全審計:季度審查 = $8,000
  • 基礎設施:額外的伺服器 = $2,400/年

估計開源成本:每年$28,800-$46,000(說明性,基於$100-$150/小時的開發者費率)

IronPDF的總投資是多少?

  • 團隊授權:$2,399/年
  • 實施:8-16小時 × $100/小時 = $800-$1,600
  • 支援:包括優先響應

預估IronPDF成本:授權費+每年$800-$1,600的實施

通過縮短開發時間和消除維護負擔,尤其是對於目前花費大量時間處理開源PDF渲染和部署問題的團隊,授權成本差異可以得到彌補。

哪個解決方案適合您的PDF生成需求?

選擇開源或商業解決方案取決於您的具體情境。

在以下情況選擇開源:

  • 您的團隊具有深厚的PDF專業知識
  • 存在專門的維護資源
  • 要求保持基本和穩定
  • 建立概念驗證專案

在以下情況選擇IronPDF:

  • 團隊生產力驅動決策
  • 重視高級功能
  • 專業支援提供價值
  • 預測成本超過授權費用

今天如何開始建立高品質PDF文件?

對於評估PDF解決方案的團隊,需評估實際需求並計算現實成本。 雖然開源程式庫消除了授權費用,但通過開發時間和維護負擔引入了大量隱性成本。

IronPDF提供了一個完整的解決方案,優先考慮開發者的生產力。 該程式庫包括豐富的文件程式碼範例專業支援,確保您的團隊成功。

加入30天免費試用,以根據您的使用案例評估IronPDF。 試用提供完整的功能和支援存取,讓您根據經驗而不是假設來做出明智的決策。

通過NuGet套件管理器立即安裝IronPDF:

PM > Install-Package IronPdf

將HTML內容轉換為像素完美的PDF,這是一個為商業需求設計的解決方案。 您的應用程式可以立即使用這個功能豐富的程式庫來加速PDF開發。

請注意: DinkToPdf, PDFSharp, PuppeteerSharp, 和 wkhtmltopdf是其各自擁有者的註冊商標。 本網站與DinkToPdf, PuppeteerSharp, empira Software GmbH, 或 wkhtmltopdf沒有關聯、支持或贊助。 所有產品名稱、徽標和品牌均為其各自所有者的財產。 比較僅供資訊參考,並反映了撰寫時的公開可用資訊。
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有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

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立