因接口生成Pdf推送, 工作需要进行Pdf生成,但网上生成Pdf的文档好少:
1.生成Pdf需要文件路径/内容 都可以配置
2.使用组件 itextsharp.dll 本人用版本:v2.0.50727
3.保存路径,本模块 实现备份和转移上传
贴核心代码如下:
public class PdfHelper
{
/// <summary>
/// 根据传入XML文件创建Pdf文件
/// 一张单据对应一个pdf文件,A4纸张大小,文件格式UTF-8格式。
/// </summary>
/// <param name="xmlStr">xml字符串</param>
/// <param name="filePath">生成Pdf的文件名称</param>
public static void CreatePdf(string inXML, string filePath, string logName, out string vsErr)
{
vsErr = string.Empty;
try
{
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.Write);
Document docPDF = new Document(); //创建一个pdf文档的对象
IODirFolder(Path.GetDirectoryName(filePath), logName, out vsErr);
PdfWriter write = PdfWriter.GetInstance(docPDF, fs);//创建一个写入PDF的对象
BaseFont bsFont = BaseFont.CreateFont(@"C:\Windows\Fonts\simsun.ttc,1", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(bsFont); //在这里需要注意的是,itextsharp不支持中文字符,想要显示中文字符的话需要自己设置字体
docPDF.Open(); //打开
docPDF.Add(new Paragraph(inXML, font));//将XML写入PDF中
docPDF.Close(); //关闭
}
catch (Exception ex)
{
logCom.WriteFile(string.Format("CreatePdf=>{0}", ex.ToString()), logName, out vsErr);
}
}
/// <summary>
/// 输入输出验证IO 文件夹
/// </summary>
/// <param name="folderPath"></param>
public static void IODirFolder(string folderPath, string logName, out string vsErr)
{
vsErr = string.Empty;
try
{
if (!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
}
catch (Exception ex)
{
LogCom.WriteFile(string.Format("IODirFolder=>{0}", ex.ToString()), logName, out vsErr);
}
}
}
拓展:通过以上可以制作类似好多小工具,如读取,写入 合并Pdf 按照页面写入等。
本文章为工作之中 2分钟笔记。
附录:
ConfigParmater.cs
XmlUtil.cs
和其他调用模块