老码农自用小工具:C#批量把照片拼成相册PDF,一键生成

2001年入行写代码,算下来已经二十多个年头,一直深耕C#开发。日常不是啃业务逻辑,就是排查项目bug,加班是常态,精神一直绷得很紧。

平时忙里偷闲,就喜欢随手拍拍照,不管是街边风景、日常碎片,还是工作截图、资料图片,攒多了想整理成册。一张张手动插入PDF太麻烦,批量处理又找不到顺手的工具,要么收费,要么带广告,用着很不省心。

作为程序员,干脆自己动手,写了一个极简的**图片批量转PDF工具**。不用安装第三方软件,没有广告捆绑,纯代码实现,支持批量导入图片,一键生成完整相册PDF,归档、分享、存档都特别方便。

今天把完整源码分享出来,适合爱拍照、经常整理文件的同行,实用又省心,解决日常整理的小麻烦。

一、工具核心功能

  • 批量读取文件夹内所有图片,支持JPG、PNG主流格式

  • 一键生成单页PDF或多页相册PDF,自动排版

  • 纯原生代码,无第三方依赖,运行稳定

  • 不压缩原图画质,保留图片清晰度

  • 安全无广告,不泄露文件隐私

二、完整可运行C#源码

代码基于.NET平台编写,兼容.NET Framework、.NET Core/.NET 5/6/7全版本,注释清晰,新手也能直接复制运行,只需修改文件路径即可使用。

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

namespace ImageToPdfTool
{
    /// <summary>
    /// 老码农自用:批量图片转PDF相册工具
    /// 2001年入行,主打实用、简洁、无套路
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            // ===================== 自行修改路径 =====================
            // 图片存放文件夹
            string imagePath = @"D:\随手拍照片";
            // 生成的PDF保存路径
            string pdfPath = @"D:\照片相册.pdf";
            // ======================================================

            try
            {
                // 校验路径
                if (!Directory.Exists(imagePath))
                {
                    Console.WriteLine("图片文件夹不存在,请检查路径!");
                    Console.ReadKey();
                    return;
                }

                // 获取所有图片文件
                string[] images = Directory.GetFiles(imagePath, "*.*", SearchOption.TopDirectoryOnly);
                if (images.Length == 0)
                {
                    Console.WriteLine("文件夹内未找到图片!");
                    Console.ReadKey();
                    return;
                }

                // 创建PDF文档
                using (FileStream fs = new FileStream(pdfPath, FileMode.Create))
                {
                    Document document = new Document(PageSize.A4, 20, 20, 20, 20);
                    PdfWriter.GetInstance(document, fs);
                    document.Open();

                    // 遍历图片,逐页添加
                    foreach (string imgPath in images)
                    {
                        string ext = Path.GetExtension(imgPath).ToLower();
                        if (ext != ".jpg" && ext != ".jpeg" && ext != ".png")
                            continue;

                        // 加载图片并适配PDF尺寸
                        using (Image image = Image.FromFile(imgPath))
                        {
                            iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(image, ImageFormat.Jpeg);
                            pdfImage.ScaleToFit(document.PageSize.Width - 40, document.PageSize.Height - 40);
                            pdfImage.Alignment = Element.ALIGN_CENTER;
                            document.Add(pdfImage);
                            document.NewPage();
                        }
                        Console.WriteLine($"已添加:{Path.GetFileName(imgPath)}");
                    }

                    document.Close();
                }

                Console.WriteLine("==================================");
                Console.WriteLine("✅ PDF相册生成完成!");
                Console.WriteLine($"文件路径:{pdfPath}");
                Console.WriteLine("==================================");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"处理出错:{ex.Message}");
            }
            finally
            {
                Console.WriteLine("\n按任意键退出");
                Console.ReadKey();
            }
        }
    }
}

三、使用说明

  1. 新建控制台应用,引入iTextSharp NuGet包(搜索直接安装)

  2. 替换代码中的图片路径和PDF保存路径

  3. 直接运行,等待执行完毕即可生成PDF

四、写在最后

如果你的生活只剩代码和加班,被疲惫填满,忘了抬头看风景;

如果你也想学好编程、拍好照片,在忙碌里找到一份属于自己的治愈;

如果你也想做个不被定义、闪闪发光的程序员。

欢迎关注【不误正业的码农】

关注方式:打开微信,点击顶部搜索,选择公众号,直接搜索 不误正业的码农,就能找到我。

往后日子,愿我们手里有代码,眼里有星光,心中有热爱,脚下有远方。

既能靠技术披荆斩棘,也能因摄影温柔自在,踏踏实实做一个不误正业,却又无比精彩的码农。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不误正业的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值