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();
}
}

浙公网安备 33010602011771号