最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#使用Spire.PDF?for?.NET實現PDF文檔打印功能

 更新時間:2025年08月27日 15:06:47   作者:LSTM97  
本文將以Spire.PDF?for?.NET為核心,為大家詳細介紹一下如何構建穩(wěn)定高效的C#?PDF打印解決方案,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下

在.NET企業(yè)級開發(fā)場景中,PDF打印功能的實現常面臨三大痛點:傳統(tǒng)Adobe組件依賴導致Linux環(huán)境部署困難、打印機參數配置復雜易觸發(fā)異常、批量任務處理時內存泄漏風險陡增。本文將以Spire.PDF for .NET為核心,詳解如何構建穩(wěn)定高效的C# PDF打印解決方案。

一、環(huán)境搭建與基礎配置

通過NuGet安裝最新組件:

Install-Package Spire.PDF

基礎代碼需引用以下命名空間:

using Spire.Pdf;
using Spire.Pdf.Print;
using System.Drawing.Printing;

打印機權限檢測實現代碼:

// 檢測默認打印機狀態(tài)
PrintServer server = new PrintServer();
PrintQueue queue = server.GetPrintQueue(PrinterSettings.InstalledPrinters[0]);
if (queue.IsNotAvailable || queue.IsInError)
{
    throw new Exception("打印機不可用,錯誤代碼:" + queue.QueueStatus);
}

二、基本打印實現流程

1. PDF加載方式對比

// 方式1:文件路徑加載(推薦)
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("invoice.pdf");

// 方式2:流加載(適用于網絡文件)
using (FileStream fs = new FileStream("report.pdf", FileMode.Open))
{
    doc.LoadFromStream(fs);
}

2. 打印參數配置

PdfPrintSettings settings = doc.PrintSettings;
settings.Copies = 2;
settings.Landscape = true;

3. 執(zhí)行打印操作

// 同步打?。ㄗ枞骶€程)
doc.Print();

// 異步打印(推薦批量場景)
var thread = new Thread(() => { doc.Print(); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

4. 異常處理實踐

try
{
    printDoc.Print();
}
catch (Spire.Pdf.PdfException ex)
{
    Console.WriteLine($"PDF解析異常:{ex.Message}");
}
catch (PrintSystemException ex)
{
    Console.WriteLine($"打印系統(tǒng)異常:{ex.Message}");
}

三、高級打印控制參數

參數類型屬性名取值范圍應用場景
頁面選擇SelectPageRange1-based索引打印2-5頁: "2-5"
份數設置Copies1-99會議材料多份打印
方向控制Landscapetrue/false橫向財務報表打印
縮放比例Zoom0.1-2.0適應A4紙張

四、企業(yè)級應用優(yōu)化

批量打印內存管理

foreach (var file in Directory.GetFiles("PDFs"))
{
    using (PdfDocument doc = new PdfDocument(file)) // 自動釋放資源
    {
        doc.Print();
    }
    GC.Collect(); // 主動觸發(fā)內存回收
}

關鍵技術要點

1.使用打印隊列服務防止任務堆積

2.Windows服務部署需配置[Allow service to interact with desktop]

3.通過EventLog記錄打印成功/失敗日志

4.監(jiān)控打印機狀態(tài):

PrintQueue.Refresh();
if (PrintQueue.IsPaperJammed) {...}

技術聲明:本方案基于.NET Framework 4.6+,需引用System.Drawing.Printing程序集。Windows服務部署時,請?zhí)貏e注意會話0隔離限制,建議通過計劃任務觸發(fā)打印進程。

五、知識拓展:使用C#為PDF文檔添加專業(yè)水印

在數字化時代,PDF文檔已成為信息傳遞和存儲的核心載體。無論是商業(yè)合同、技術報告還是內部資料,保護文檔的版權、標識其狀態(tài)或強化品牌形象都至關重要。為PDF文檔添加水印,正是實現這些目標的一種高效且常見的方式。然而,手動為大量PDF文件添加水印,不僅效率低下,且極易出錯。

本文將深入探討如何利用C#編程語言,結合強大的Spire.PDF for .NET庫,實現PDF水印的自動化、專業(yè)化添加。告別繁瑣的手動操作,讓您的PDF處理流程更上一層樓!

為什么選擇 Spire.PDF for .NET

在眾多的PDF處理庫中,Spire.PDF for .NET以其卓越的性能、豐富的功能集和友好的API設計脫穎而出。它是一個專業(yè)的PDF組件,允許開發(fā)者在.NET應用程序中輕松創(chuàng)建、讀寫、編輯、轉換和打印PDF文檔,而無需安裝Adobe Acrobat。

選擇Spire.PDF for .NET的理由包括:

  • 功能全面: 支持文本、圖片、矢量圖形、表單、批注、加密、數字簽名等多種PDF元素操作。
  • 易用性: 提供直觀的API,學習曲線平緩,開發(fā)者可快速上手。
  • 高性能: 能夠高效處理大型PDF文件和批量操作。
  • 兼容性: 嚴格遵循PDF標準,確保生成和處理的PDF文件具有良好的兼容性。

要在您的項目中開始使用Spire.PDF for .NET,只需通過NuGet包管理器安裝即可:

Install-Package Spire.PDF

實現文本水?。悍植街改吓c代碼示例

文本水印是PDF文檔中最常見的水印類型,常用于標注“機密”、“草稿”、“版權所有”等信息。

代碼示例:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace AddTextWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加載文檔
            PdfDocument doc = new PdfDocument();
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\AI.pdf");

            // 創(chuàng)建字體和畫刷
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Black", 50f), true);
            PdfBrush brush = PdfBrushes.Blue;

            // 指定水印文字
            string watermarkText = "DO NOT COPY";

            // 設置透明度
            float opacify = 0.6f;

            // 遍歷頁
            foreach (PdfPageBase page in doc.Pages)
            {
                // 繪制水印文字
                AddWatermark(page, watermarkText, font, brush, opacify);
            }

            // 保存文檔
            doc.SaveToFile("Watermark.pdf");
            doc.Dispose();
        }

        private static void AddWatermark(PdfPageBase page, string watermarkText, PdfTrueTypeFont font, PdfBrush brush, float opacity)
        {
            page.Canvas.SetTransparency(opacity);
            SizeF textSize = font.MeasureString(watermarkText);
            float pageWidth = page.ActualSize.Width;
            float pageHeight = page.ActualSize.Height;
            float x = (pageWidth - textSize.Width) / 2;
            float y = (pageHeight - textSize.Height) / 2;
            
            //page.Canvas.RotateTransform(-45);
            page.Canvas.DrawString(watermarkText, font, brush, x, y);
        }
    }
}

實現圖片水印:分步指南與代碼示例

圖片水印常用于添加公司Logo、品牌圖標或特殊的背景圖案。

代碼示例:

using Spire.Pdf;
using System.Drawing;

namespace AddImageWatermark
{
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建一個PdfDocument對象
            PdfDocument document = new PdfDocument();

            //加載示例PDF文檔
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pdf");

            //加載圖片
            Image image = Image.FromFile(@"C:\Users\Administrator\Desktop\logo.png");

            //獲取圖片寬度和高度
            int imgWidth = image.Width;
            int imgHeight = image.Height;

            //遍歷頁面
            for (int i = 0; i < document.Pages.Count; i++)
            {
                //獲取頁面寬度和高度
                float pageWidth = document.Pages[i].ActualSize.Width;
                float pageHeight = document.Pages[i].ActualSize.Height;

                //設置背景不透明度
                document.Pages[i].BackgroudOpacity = 0.3f;

                //設置當前頁面的背景圖片
                document.Pages[i].BackgroundImage = image;

                //將背景圖片置于頁面中央
                Rectangle rect = new Rectangle((int)(pageWidth - imgWidth) / 2, (int)(pageHeight - imgHeight) / 2, imgWidth, imgHeight);
                document.Pages[i].BackgroundRegion = rect;
            }
            //保存文檔
            document.SaveToFile("AddImageWatermark.pdf");
            document.Close();
        }
    }
}

到此這篇關于C#使用Spire.PDF for .NET實現PDF文檔打印功能的文章就介紹到這了,更多相關C#打印PDF內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#中把字符串String轉換為整型Int的小例子

    C#中把字符串String轉換為整型Int的小例子

    這篇文章主要介紹了C#中把字符串String轉換為整型Int的小例子,本文使用TryParse方法實現轉換,需要的朋友可以參考下
    2014-08-08
  • c# 類和成員的修飾詳細介紹

    c# 類和成員的修飾詳細介紹

    本文將詳細介紹c# 類和成員的修飾,需要的朋友可以參考下
    2012-11-11
  • C#如何使用XmlDocument訪問XML文件

    C#如何使用XmlDocument訪問XML文件

    本文介紹了XML文件的特點、用途、格式、示例、解析和處理方式,以及在C#中使用XmlDocument類進行增刪改查操作的方法,XML文件是一種靈活的數據描述和存儲方式,適用于各種應用場景,在C#中,通過XmlDocument類可以方便地對XML文件進行操作
    2024-12-12
  • C#中實現在32位、64位系統(tǒng)下自動切換不同的SQLite dll文件

    C#中實現在32位、64位系統(tǒng)下自動切換不同的SQLite dll文件

    這篇文章主要介紹了C#中實現在32位、64位系統(tǒng)下自動切換不同的SQLite dll文件,本文使用C#代碼實現DLL文件的切換,需要的朋友可以參考下
    2014-09-09
  • C#11新特性之file關鍵字的用法教程

    C#11新特性之file關鍵字的用法教程

    C#11?添加了文件作用域類型功能:一個新的?file?修飾符,可以應用于任何類型定義以限制其只能在當前文件中使用。這樣,我們可以在一個項目中擁有多個同名的類。本文就來聊聊file關鍵字的用法,需要的可以參考一下
    2022-12-12
  • C#中通過反射將枚舉元素加載到ComboBo的實現方法

    C#中通過反射將枚舉元素加載到ComboBo的實現方法

    本文主要介紹了C#中通過反射將枚舉元素加載到ComboBo的實現方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • VS2012 程序打包部署圖文詳解

    VS2012 程序打包部署圖文詳解

    VS2012雖然沒有集成打包工具,但它為我們提供了下載的端口,需要我們手動安裝一個插件InstallShield。網上有很多第三方的打包工具,但為什么偏要使用微軟提供的呢
    2016-12-12
  • C#用Topshelf創(chuàng)建Windows服務的步驟分享

    C#用Topshelf創(chuàng)建Windows服務的步驟分享

    這篇文章主要給大家介紹了關于C#如何利用Topshelf創(chuàng)建Windows服務的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C#具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-05-05
  • C#實現屏幕拷貝的方法

    C#實現屏幕拷貝的方法

    這篇文章主要介紹了C#實現屏幕拷貝的方法,實例分析了兩種常用的屏幕拷貝實現技巧,需要的朋友可以參考下
    2015-06-06
  • C# 動畫窗體(AnimateWindow)的小例子

    C# 動畫窗體(AnimateWindow)的小例子

    C# 動畫窗體(AnimateWindow)的小例子,需要的朋友可以參考一下
    2013-03-03

最新評論

梨树县| 南充市| 嵊泗县| 西乌珠穆沁旗| 云和县| 武胜县| 汉源县| 上犹县| 桃江县| 平顶山市| 剑川县| 黑龙江省| 高唐县| 砀山县| 濮阳县| 隆子县| 淮南市| 凤冈县| 平原县| 永年县| 思茅市| 宣化县| 孙吴县| 鲁甸县| 无为县| 克什克腾旗| 镇康县| 玉田县| 烟台市| 当涂县| 万荣县| 淮滨县| 鹤岗市| 从化市| 利川市| 祥云县| 白山市| 张家港市| 林口县| 南华县| 布拖县|