C# 操作文件案例方法

常规操作之笔记摘要!!

1、C# 两种拼接pdf文件的案例方法


       /// <summary>
        /// C# 两种拼接pdf文件的方法
        /// </summary>
        public void PDF()
        {
        
            //方法一:
            using (iTextSharp.text.Document document=new iTextSharp.text.Document())
            {
               
                var Url = ""; //文档需要保存到文件夹的路径
                //保存文档的地址设置
                FileStream output = new FileStream(Url, FileMode.Create); //引入:using System.IO;
                //复制签名信息
                iTextSharp.text.pdf.PdfSmartCopy copy = new iTextSharp.text.pdf.PdfSmartCopy(document, output);
                copy.ViewerPreferences = iTextSharp.text.pdf.PdfWriter.HideToolbar | iTextSharp.text.pdf.PdfWriter.HideMenubar;
                var fixHead = "";//原始文件路径
                fixHead = AppDomain.CurrentDomain.BaseDirectory + (fixHead.StartsWith("/") ? "" : "/");
                byte[] bytes = FileHelper.SetImageToByteArray(fixHead);
                iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(bytes);
                int iPageNum = reader.NumberOfPages;
                for (int j = 1; j <= iPageNum; j++)
                {
                    document.NewPage();
                    iTextSharp.text.pdf.PdfImportedPage page = copy.GetImportedPage(reader, j);
                    copy.AddPage(page);
                }
            }
            
            //方法一:
            var PDFFile = "";//文档需要保存到文件夹的路径
            using (iTextSharp.text.Document document = new iTextSharp.text.Document())
            {
                PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(PDFFile, FileMode.Create));//引入:using iTextSharp.text.pdf;
                document.Open();
                PdfContentByte pdf_cb = writer.DirectContent;
                PdfImportedPage newPage;
                List<PdfReader> readerList = new List<PdfReader>();
                PdfReader reader;


                reader = new PdfReader("文件原始路径");
                int iPageNum = reader.NumberOfPages;
                for (int j = 1; j <= iPageNum; j++)
                {
                    document.NewPage();
                    newPage = writer.GetImportedPage(reader, j);
                    pdf_cb.AddTemplate(newPage, 0, 0);
                }
                readerList.Add(reader);


                document.Close();
                foreach (var rd in readerList)//清理占用
                {
                    rd.Dispose();
                }
            }


        }

2、获取Word、Excel文件的内容

---->AppContext.BaseDirectory  为系统根目录路径
StreamReader sr=new StreamReader(AppContext.BaseDirectory+"存储路径");
jsontext=sr.ReadToEnd().ToString();
sr.Close();

3、给Word文件写入内容

string _Url = AppContext.BaseDirectory  + "存储目录";
DirectoryInfo info = new DirectoryInfo(_Url);
if (!info.Exists) 
Directory.CreateDirectory(_Url);  //创建文件夹
FileStream fl = new FileStream(AppContext.BaseDirectory+"存储路径",FileMode.Create,System.IO.FileAccess.Write);//创建写入文件
StreamWriter s = new StreamWriter(fl);
sw.Write("需要写入的内容");//开始写入值
sw.Close();
fl.Close();  //关闭

4、替换Word文件内容

 File.WriteAllText("路径","内容");

5、将前端传的base64格式存储为文件

var imagesname = DateTime.Now.ToString("yyyyMMddHHmmss")+ i + ".png";
 var path = $"保存地址/{imagesname}";
 try
 {
     var base64string = string.Empty;
     if (F_base64String.Contains("data:image/png;base64,"))//判断格式
     {
         base64string= F_base64String.Replace("data:image/png;base64,", "").Replace(" ", "+");

     }else if (F_base64String.Contains("data:image/jpeg;base64,"))
     {
         base64string = F_base64String.Replace("data:image/jpeg;base64,", "").Replace(" ", "+");
     }
     else if (F_base64String.Contains("data:image/jpg;base64,"))
     {
         base64string = F_base64String.Replace("data:image/jpg;base64,", "").Replace(" ", "+");
     }
     // 将Base64字符串转换为字节数组
     byte[] imageBytes = Convert.FromBase64String(base64string);
     // 设置保存路径
     string filePath = Path.Combine(Directory.GetCurrentDirectory(), $"保存地址/", imagesname);
     // 确保上传目录存在
     Directory.CreateDirectory(Path.GetDirectoryName(filePath));
     // 将字节数组写入文件
     File.WriteAllBytes(filePath, imageBytes);
 }
 catch (Exception ex)
 {
     path = "";
 }
 return path;

6、C#获取JSON文件内容

 文件内容:[{"Id":"1","Name":"1"},{},{}]
var url = HttpContext.Current.Server.MapPath("路径.json");
 if (System.IO.File.Exists(url))//判定是否存在文件
{
      StreamReader sr = new StreamReader(url, false);
       var json = sr.ReadToEnd().ToString();
        var ModelInfo = JsonConvert.DeserializeObject<List<实体Model>>(json);//实体要和文件一致对象时则不需要List
        sr.Close();
         sr.Dispose();
         //获取到后,进行进行数据的处理
}

7、C#修改PDF文件的页码方法

  // 读取原始PDF文件
            using (PdfReader reader = new PdfReader(inputPath))
            {
                using (FileStream fs = new FileStream(outputPath, FileMode.Create))
                {
                    // 创建PDF文档副本
                    iTextSharp.text.Document document = new iTextSharp.text.Document();
                    PdfCopy pdf = new PdfCopy(document, fs);

                    document.Open();

                    // 获取总页数
                    int totalPages = reader.NumberOfPages;

                    // 遍历每一页
                    for (int i = 1; i <= totalPages; i++)
                    {
                        // 创建新的PdfReader实例来读取当前页
                        using (PdfReader pageReader = new PdfReader(inputPath))
                        {
                            // 使用PdfStamper修改当前页
                            using (MemoryStream ms = new MemoryStream())
                            {
                                PdfStamper stamper = new PdfStamper(pageReader, ms);

                                // 获取页面内容
                                PdfContentByte content = stamper.GetOverContent(i);//.GetUnderContent(i);

                                // 设置字体和颜色
                                // BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                                BaseFont baseFont = BaseFont.CreateFont("E:\\电脑字体\\Fonts\\simsun.ttc,1", BaseFont.IDENTITY_H, true); // 使用宋体字体

                                iTextSharp.text.Font font = new iTextSharp.text.Font(baseFont, 10); //重点,显示中文,否则不显示
                                content.SetFontAndSize(baseFont, 10);
                                content.SetRGBColorFill(0, 0, 0); // 黑色

                                // 获取页面尺寸
                                Rectangle pageSize = pageReader.GetPageSize(i);

                                // 计算页码位置(右上角)
                                float x = pageSize.Right - 100; // 右边距50点
                                float y = pageSize.Top - 40;   // 上边距20点
                                string newPageNumber = $"第  {i}  页,共  {totalPages}  页";

                                // 如果需要覆盖更大的区域,可以绘制矩形
                                content.SetColorFill(BaseColor.WHITE);
                                content.Rectangle(pageSize.Right - 220, pageSize.Top - 40, 200, 22); // x, y, width, height
                                content.Fill();
                                //content.BeginText();// 开始新文本的绘制过程
                                content.SetColorFill(BaseColor.BLACK);  //先覆盖(执行上面),然后在写入新内容时,此行是关键
                                // 添加新页码
                                // ColumnText.ShowTextAligned(content,Element.ALIGN_CENTER,new Phrase(newPageNumber, font), x, y, 0);//效果同下行
                                //content.ShowTextAligned(Element.ALIGN_CENTER, newPageNumber, x, y, 0);
                                //content.EndText();// 结束文本绘制过程
                                stamper.Close();
                                // 将修改后的页面添加到新文档
                                using (PdfReader modifiedPageReader = new PdfReader(ms.ToArray()))
                                {
                                    PdfImportedPage importedPage = pdf.GetImportedPage(modifiedPageReader, i);
                                    pdf.AddPage(importedPage);
                                }
                            }
                        }
                    }

                    pdf.FreeReader(reader);
                    document.Close();
                }
            }

 

posted @ 2025-04-29 17:04  小鱼记忆  阅读(21)  评论(0)    收藏  举报