新闻资讯 | 控件产品 | 技术文章 | 购物车 | 合作伙伴 | 问题解答 | 电子简报 | PDF论坛 | 资源下载
您现在的位置:技术文章>PDF开发篇 首页|PDF应用篇|PDF开发篇|解决方案

Asp.Net(C#)生成PDF详解 第四篇:生成PDF文件并添加文字水印

发布日期:2012-4-18 作者:三角猫 DeltaCat 出处:真有意思网(http://www.zu14.cn)

原文地址:http://www.zu14.cn/2010/09/20/csharp-aspnet-itextsharp-create-pdf-file-with-text-watermask/

有了前面3篇的基础,我们今天,来演示如何给PDF文件,添加文字水印

先看效果图:

asp.net PDF 文字水印

说明:

iTextsharp 给PDF文件添加水印,是通过 PdfWriter 的 PageEvent 事件来处理的,此事件,需要继承 PdfPageEventHelper,并且重写 OnEndPage 事件。

实现代码:

//定义一个Document,并设置页面大小为A4,竖向
iTextSharp.text.Document doc = new Document(PageSize.A4);
try
{
    //写实例
    PdfWriter writer = PdfWriter.GetInstance(doc, new 
FileStream("chap05.pdf", FileMode.Create));

    #region 载入亚洲字体资源,无此操作的话,不能显示包括中文、日文、韩文等内容
    BaseFont.AddToResourceSearch("iTextAsian.dll");
    BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
    BaseFont bf = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H",
 BaseFont.NOT_EMBEDDED);
    #endregion

    //生成水印
    writer.PageEvent = new PdfEventHanler("三角猫 DeltaCat", bf);

    //打开document
    doc.Open();

    //写入一个段落, Paragraph
    doc.Add(new Paragraph("你好, PDF !\n\n我是有文字水印的",
 new Font(bf, 12)));

    //关闭document
    doc.Close();
    //打开PDF,看效果
    Process.Start("chap05.pdf");
}
catch (DocumentException de)
{
    Console.WriteLine(de.Message);
    Console.ReadKey();
}
catch (IOException io)
{
    Console.WriteLine(io.Message);
    Console.ReadKey();
}

PdfEventHandler

public class PdfEventHanler : PdfPageEventHelper
{
    string m_WatermaskText;
    BaseFont m_WatermaskTextFont;

    /// <summary>
    ///
    /// </summary>
    /// <param name="watermaskText">水印文字的内容</param>
    /// <param name="watermaskTextFont">水印文字的字体</param>
    public PdfEventHanler(string watermaskText,
 BaseFont watermaskTextFont)
    {
        m_WatermaskText = watermaskText;
        m_WatermaskTextFont = watermaskTextFont;
    }

    /// <summary>
    /// 在Page End事件中,添加页面水印,此事件在每页均会发生
    /// </summary>
    /// <param name="writer"></param>
    /// <param name="document"></param>
    public override void OnEndPage(PdfWriter writer, 
Document document)
    {
        PdfGState gstate = new PdfGState();
        gstate.FillOpacity = 0.2f; //设置灰度和透明度
        gstate.StrokeOpacity = 0.2f;

        //水印内容,必须放置在底层
        PdfContentByte wm = writer.DirectContentUnder;
        wm.SaveState();
        wm.SetGState(gstate);

        #region 给页面添加文字水印
        wm.SetFontAndSize(m_WatermaskTextFont, 50);
        wm.BeginText();
        wm.ShowTextAligned(Element.ALIGN_CENTER, m_WatermaskText, 
document.PageSize.Width / 2, document.PageSize.Height / 2, -35f);
        wm.EndText();
        #endregion

        wm.RestoreState();

        base.OnEndPage(writer, document);
    }
}

敬请关注: 第五篇 给PDF文件添加图片水印

发布人:管理员 【报告错误】·【推荐好友】·【打印文章】
相关评论 本文现有 0 条评论 评分人数: 0 平均分: 0
相关评论
用户名: 密  码:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
注意:请不要在评论中含与内容无关的广告链接,违者封ID
文章搜索
推荐文章
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
循序渐进学习iTextShar
热门点击
一个简单的PDF文件结构的分析(22562)
PHP的FDF文档支持(16207)
用C#制作PDF文件全攻略(13651)
Word转换PDF格式的C#或(12165)
pdfMaker文章:PDF加(11657)
ITextRenderer学习(11364)
PDF文件加密仿真(11074)
怎样用iReport制作Web(10435)
iText PDF概述(1)(9954)
循序渐进学习iTextShar(9890)
热门评论
从pdf文档中提取出文本(8)
PDFlib开发:创建超文本元(2)
客户端自动打印PDF(Prin(2)
浅谈PDFlib中文输出(一)(2)
xml的转换之pdf 2 ((1)
xml的转换之pdf 1 (x(1)
PDF知识讲座(1)(1)
PDFBox使用简介(1)
使用正则表达式计算PDF文档的(1)
word转pdf(1)