如何iTextSharp的适用的Html标题图片为PDF转换器 [英] How to apply Header Image in itextsharp Html to pdf convertor

查看:177
本文介绍了如何iTextSharp的适用的Html标题图片为PDF转换器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请给我任何的解决方案;我用这code:

 的HeaderFooter头=新的HeaderFooter(新词(这是一个标题),FALSE);
 document.Header =头;

但这种出错:


  

CS0246:结果
   类型或命名空间名称'的HeaderFooter'找不到(你
   缺少using指令或程序集引用?



解决方案

这code是的德precated和多年前删除,但在源$ C ​​$ C意见仍生活在不幸。

你想要做什么是子类 iTextSharp.text.pdf.PdfPageEventHelper 类和处理的OnEndPage 方法这将被调用一次,每一页文档中:

 公共类MyPageEventHandler:iTextSharp.text.pdf.PdfPageEventHelper {
    公共覆盖无效的OnEndPage(PdfWriter作家,文档文件){
        //创建一个简单的ColumnText对象
        VAR CT =新ColumnText(writer.DirectContent);
        //将它绑定到文档的顶部,但占据整个页面宽度
        CT.SetSimpleColumn(0,document.PageSize.Height - 20,document.PageSize.Width,document.PageSize.Height);
        //添加一些文字
        CT.AddText(新词(这是一个测试));
        //绘制我们ColumnText对象
        CT.Go();
    }
}

要使用这个你只是它的一个新的实例绑定到你的 PdfWriter PageEvent 属性:

  writer.PageEvent =新MyPageEventHandler();

下面是一个完整的工作C#2010 WinForms应用程序针对iTextSharp的5.1.2.0,显示这一点:

 使用系统;
使用System.IO;
使用System.Windows.Forms的;
使用iTextSharp.text;
使用iTextSharp.text.pdf;命名空间WindowsFormsApplication1 {
    公共部分Form1类:表格{
        公共Form1的(){
            的InitializeComponent();
        }        私人无效Form1_Load的(对象发件人,EventArgs的发送){
            //测试文件创建
            字符串OUTPUTFILE = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop)的test.pdf);
            //标准PDF文件流的创建
            使用(的FileStream输出=新的FileStream(OUTPUTFILE,FileMode.Create,FileAccess.Write,FileShare.None)){
                使用(文档的文档=新的文件(PageSize.LETTER)){
                    使用(PdfWriter作家= PdfWriter.GetInstance(文件输出)){                        //绑定我们的自定义事件处理程序PdfWriter
                        writer.PageEvent =新MyPageEventHandler();
                        //打开我们的PDF写作
                        document.Open();                        //一些文本添加到第1页
                        document.Add(新段(这是第1页));
                        //添加了新的一页
                        document.NewPage();
                        //一些文本添加到第2页
                        document.Add(新段(这是第2页));                        //关闭PDF
                        document.Close();
                    }
                }
            }            this.Close();
        }
    }
    公共类MyPageEventHandler:iTextSharp.text.pdf.PdfPageEventHelper {
        公共覆盖无效的OnEndPage(PdfWriter作家,文档文件){
            //创建一个简单的ColumnText对象
            VAR CT =新ColumnText(writer.DirectContent);
            //将它绑定到文档的顶部,但占据整个页面宽度
            CT.SetSimpleColumn(0,document.PageSize.Height - 20,document.PageSize.Width,document.PageSize.Height);
            //添加一些文字
            CT.AddText(新词(这是一个测试));
            //绘制我们ColumnText对象
            CT.Go();
        }
    }
}

Please give me any solution; I am using this code:

 HeaderFooter header = new HeaderFooter(new Phrase("This is a header"), false);
 document.Header = header;

but this error occured:

CS0246:
The type or namespace name 'HeaderFooter' could not be found (are you missing a using directive or an assembly reference?

解决方案

That code was deprecated and removed many years ago but still lives on in comments in the source code unfortunately.

What you want to do is subclass the iTextSharp.text.pdf.PdfPageEventHelper class and handle the OnEndPage method which will get called once for every page in your document:

public class MyPageEventHandler : iTextSharp.text.pdf.PdfPageEventHelper {
    public override void OnEndPage(PdfWriter writer, Document document) {
        //Create a simple ColumnText object
        var CT = new ColumnText(writer.DirectContent);
        //Bind it to the top of the document but take up the entire page width
        CT.SetSimpleColumn(0, document.PageSize.Height - 20, document.PageSize.Width, document.PageSize.Height);
        //Add some text
        CT.AddText(new Phrase("This is a test"));
        //Draw our ColumnText object
        CT.Go();
    }
}

To use this you just bind a new instance of it to your PdfWriter's PageEvent property:

writer.PageEvent = new MyPageEventHandler();

Below is a full working C# 2010 WinForms app targeting iTextSharp 5.1.2.0 that shows this:

using System;
using System.IO;
using System.Windows.Forms;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {
            //Test file to create
            string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Test.pdf");
            //Standard PDF file stream creation
            using (FileStream output = new FileStream(outputFile, FileMode.Create,FileAccess.Write,FileShare.None)){
                using (Document document = new Document(PageSize.LETTER)) {
                    using (PdfWriter writer = PdfWriter.GetInstance(document, output)) {

                        //Bind our custom event handler to the PdfWriter
                        writer.PageEvent = new MyPageEventHandler();
                        //Open our PDF for writing
                        document.Open();

                        //Add some text to page 1
                        document.Add(new Paragraph("This is page 1"));
                        //Add a new page
                        document.NewPage();
                        //Add some text to page 2
                        document.Add(new Paragraph("This is page 2"));

                        //Close the PDF
                        document.Close();
                    }
                }
            }

            this.Close();
        }
    }
    public class MyPageEventHandler : iTextSharp.text.pdf.PdfPageEventHelper {
        public override void OnEndPage(PdfWriter writer, Document document) {
            //Create a simple ColumnText object
            var CT = new ColumnText(writer.DirectContent);
            //Bind it to the top of the document but take up the entire page width
            CT.SetSimpleColumn(0, document.PageSize.Height - 20, document.PageSize.Width, document.PageSize.Height);
            //Add some text
            CT.AddText(new Phrase("This is a test"));
            //Draw our ColumnText object
            CT.Go();
        }
    }
}

这篇关于如何iTextSharp的适用的Html标题图片为PDF转换器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆