菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
194
0

NET|C#生成PDF文件

原创
05/13 14:22
阅读数 47945

项目需要在线生成PDF文件,我首先考虑采用itextsharp控件来实现。具体方法参考 https://sourceforge.net/projects/itextsharp/

1.首先利用nuget 引入该控件包。
 
image.png
2、然后直接创建就可以了。
using iTextSharp.text;
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Text;
using System.Web;


public class CreatePDF
{
    private static CreatePDF instance;
    public static CreatePDF GetInstance()
    {
        if (instance == null)
        {
            instance = new CreatePDF();
        }
        return instance;
    }

    private static Document doc;
    //string fontdb = AppDomain.CurrentDomain.BaseDirectory + "Template\\msyh.ttc";

    //private static BaseFont bf = BaseFont.CreateFont(@"C://Windows/Fonts/simsun.ttc,0", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    static string fontdb = (AppDomain.CurrentDomain.BaseDirectory + "Template\\msyh.ttf").Replace("\\", "/");
    private static BaseFont bf = BaseFont.CreateFont(fontdb + "", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    //四种字体
    private static Font fontBig = new Font(bf, 14, Font.BOLD);

    private static Font fontSmall = new Font(bf, (float)10.5, Font.BOLD);
    private static Font fontSmallNoBold = new Font(bf, (float)10.5);
    private static float IndentationLeft = 50;//距左边距
    //如果要传参数进来,可自定义
    public string GeneratePDF(string name)
    {
        doc = new Document(PageSize.A4);
        string filePath = string.Empty;
        try
        {
            //MemoryStream ms2 = new MemoryStream();
            string fileName = string.Format("{0}.pdf", DateTime.Now.ToString("yyyyMMddHHmmss"));
            filePath = AppDomain.CurrentDomain.BaseDirectory + "Template\\" + fileName;
            FileStream fs = new FileStream(filePath, FileMode.Create);//创建临时文件,到时生成好后删除
            PdfWriter writer = PdfWriter.GetInstance(doc, fs);
            writer.CloseStream = false;//把doc内容写入流中
            doc.Open();

            //核心操作
            CreateLine(name);//生成一条下横线

            #region 添加水印
            string waterMarkName = "机密";

            #endregion

            doc.Close();
            MemoryStream ms = new MemoryStream

发表评论

0/200
194 点赞
0 评论
收藏