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

基于C#實現(xiàn)JPG轉(zhuǎn)PDF的具體方案

 更新時間:2025年09月19日 10:36:45   作者:kaikaile1995  
在當(dāng)今數(shù)字化時代,文檔處理已成為日常工作和生活中不可或缺的一部分,為了適應(yīng)各種場景的需求,文檔格式之間的轉(zhuǎn)換顯得尤為重要,PDF和JPG格式之間的轉(zhuǎn)換是常見的需求之一,本文給大家介紹了基于C#實現(xiàn)JPG轉(zhuǎn)PDF的具體方案,需要的朋友可以參考下

一、核心

1. 使用iTextSharp(基礎(chǔ)版)

using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Drawing;
using System.IO;

public void ConvertJpgToPdf(string imagePath, string pdfPath)
{
    using (FileStream fs = new FileStream(pdfPath, FileMode.Create))
    {
        Document doc = new Document(PageSize.A4, 25, 25, 25, 25);
        PdfWriter.GetInstance(doc, fs);
        doc.Open();

        // 圖片處理
        Image img = Image.GetInstance(imagePath);
        img.ScaleToFit(doc.PageSize.Width, doc.PageSize.Height); // 自適應(yīng)頁面
        img.SetAbsolutePosition(0, 0); // 左上角定位

        doc.Add(img);
        doc.Close();
    }
}

優(yōu)化點

  • 添加異常處理:try-catch塊捕獲IO異常
  • 資源釋放:使用using語句管理文件流
  • 支持多圖合并:循環(huán)處理多個文件

2. 使用Spire.PDF(商業(yè)版)

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

public void ConvertJpgToPdf(string[] imagePaths, string outputPath)
{
    PdfDocument pdf = new PdfDocument();
    
    foreach (var path in imagePaths)
    {
        PdfPageBase page = pdf.Pages.Add();
        Image image = Image.FromFile(path);
        
        // 保持原始比例縮放
        float scale = Math.Min(
            page.Canvas.ClientSize.Width / image.Width,
            page.Canvas.ClientSize.Height / image.Height
        );
        
        page.Canvas.DrawImage(image, 0, 0, image.Width*scale, image.Height*scale);
    }
    
    pdf.SaveToFile(outputPath);
}

優(yōu)勢

  • 自動處理分頁
  • 支持元數(shù)據(jù)設(shè)置(作者/標(biāo)題)
  • 內(nèi)置壓縮算法(節(jié)省30-50%體積)

3. 使用ImageMagick.NET(高級處理)

using ImageMagick;
using System.IO;

public void ConvertJpgToPdfWithCompression(string inputPath, string outputPath)
{
    using (MagickImage image = new MagickImage(inputPath))
    {
        // 圖像預(yù)處理
        image.Resize(new MagickGeometry(800, 600)); // 調(diào)整尺寸
        image.Quality = 85; // 壓縮質(zhì)量
        
        // PDF輸出配置
        image.Settings.Set("pdf:use-trimbox", "true");
        image.Write(outputPath);
    }
}

特性

  • 支持批量處理(遍歷文件夾)
  • 可設(shè)置DPI(300dpi打印優(yōu)化)
  • 透明度處理(PNG轉(zhuǎn)PDF時保留透明區(qū)域)

二、擴展功能實現(xiàn)

1. 自動分頁邏輯

// 動態(tài)分頁(每頁最大高度600px)
float currentPageHeight = 0;
List<Image> currentPageImages = new List<Image>();

foreach (var img in images)
{
    if (currentPageHeight + img.Height > 600)
    {
        AddPage(pdf, currentPageImages);
        currentPageImages.Clear();
        currentPageHeight = 0;
    }
    currentPageImages.Add(img);
    currentPageHeight += img.Height;
}

2. 水印添加

// 文字水印
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 12);
page.Canvas.DrawString("機密文件", font, PdfBrushes.LightGray, 10, 10);

// 圖片水印
Image watermark = Image.GetInstance("watermark.png");
watermark.Opacity = 0.3f;
page.Canvas.DrawImage(watermark, 0, 0);

3. 加密保護

PdfWriter writer = PdfWriter.GetInstance(doc, fs);
writer.SetEncryption(
    "userpass",    // 用戶密碼
    "ownerpass",   // 所有者密碼
    PdfWriter.ALLOW_PRINTING,
    PdfWriter.ENCRYPTION_AES_128
);

通過上述方案,開發(fā)者可根據(jù)項目需求選擇合適的實現(xiàn)方式。對于簡單需求,推薦使用Spire.PDF或iTextSharp;如需專業(yè)級圖像處理,可結(jié)合ImageMagick.NET;企業(yè)級應(yīng)用建議采用IronPDF的商業(yè)版本。

以上就是C#實現(xiàn)JPG轉(zhuǎn)PDF的具體方案的詳細(xì)內(nèi)容,更多關(guān)于C# JPG轉(zhuǎn)PDF的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#使用迭代器實現(xiàn)動態(tài)文字效果

    C#使用迭代器實現(xiàn)動態(tài)文字效果

    這篇文章主要介紹了如何使用C#的Drawing空間和Panel控件實現(xiàn)動態(tài)文字效果,通過設(shè)置字體參數(shù)、創(chuàng)建畫布、使用Graphics類的FillRectangle, MeasureString和DrawString方法,以及Panel控件的CreateGraphics方法,實現(xiàn)在Panel上繪制動態(tài)文字,需要的朋友可以參考下
    2025-11-11
  • C#如何判斷.Net?Framework版本是否滿足軟件運行需要的版本

    C#如何判斷.Net?Framework版本是否滿足軟件運行需要的版本

    這篇文章主要介紹了C#如何判斷.Net?Framework版本是否滿足軟件運行需要的版本問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • C# 中用 Sqlparameter 的兩種用法

    C# 中用 Sqlparameter 的兩種用法

    這篇文章主要介紹了C# 中用 Sqlparameter 的幾種用法,文中給大家列舉了兩種用法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • C#實現(xiàn)百度ping推送功能的方法

    C#實現(xiàn)百度ping推送功能的方法

    百度ping是網(wǎng)站優(yōu)化必做的事情,這樣才能主動推送給百度,那么基于代碼是如何實現(xiàn)百度推送方法呢?下文小編給大家?guī)砹薈#實現(xiàn)百度ping推送功能的方法,非常不錯,感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例

    C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例

    這篇文章主要介紹了C#窗體-數(shù)據(jù)庫連接及登錄功能的實現(xiàn)案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Unity3D創(chuàng)建圓柱體的方法

    Unity3D創(chuàng)建圓柱體的方法

    這篇文章主要為大家詳細(xì)介紹了Unity3D創(chuàng)建圓柱體的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • WPF中Binding字符串格式化技巧分享

    WPF中Binding字符串格式化技巧分享

    在?WPF?開發(fā)中,數(shù)據(jù)綁定(Binding)是一項核心功能,它允許?UI?元素與數(shù)據(jù)源緊密關(guān)聯(lián),下面我們就來深入了解下Binding字符串格式化的技巧吧
    2024-10-10
  • C#中獲取程序路徑的幾種方法及其區(qū)別說明

    C#中獲取程序路徑的幾種方法及其區(qū)別說明

    這篇文章主要介紹了C#中獲取程序路徑的幾種方法及其區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • c#對xml增刪改查操作示例

    c#對xml增刪改查操作示例

    本文主要介紹c#對xml增刪改查操作的示例,大家參考使用吧
    2014-01-01
  • Unity3D實現(xiàn)飛機大戰(zhàn)游戲(2)

    Unity3D實現(xiàn)飛機大戰(zhàn)游戲(2)

    這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)飛機大戰(zhàn)游戲的第二部分,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06

最新評論

曲松县| 鄂托克前旗| 社旗县| 凌源市| 顺昌县| 奎屯市| 泰和县| 新蔡县| 庄浪县| 四平市| 广丰县| 方正县| 连城县| 大兴区| 德格县| 庆安县| 蚌埠市| 巴林左旗| 新干县| 北流市| 德庆县| 寿阳县| 固始县| 永新县| 锦屏县| 霍州市| 潍坊市| 虎林市| 崇信县| 油尖旺区| 西乡县| 大名县| 抚顺县| 秦安县| 定安县| 洪洞县| 确山县| 锡林浩特市| 台前县| 双江| 天长市|