ITextPdf 7.1.13 使用 C# ASP NET 为项目创建报告的库

问题描述

我正在使用 ITextPdf 7.1.13 库为使用 C# ASP NET 的项目创建报告。

问题是生成的 pdf 在我的电脑上没问题。

但是,当我将项目保存为远程服务器上的网站时,会生成错误

CS1061:“PdfCanvas”不包含“AddXObjectAt”的定义 并且没有可访问的扩展方法“AddXObjectAt”接受第一个 可以找到“PdfCanvas”类型的参数(您是否缺少使用 指令或程序集引用?)

如果注释此行

pdfCanvas.AddXObjectAt(placeholder,x + space,y - descent);

生成的 pdf 文件很好,但没有 pdf 文件的总页数。

下面是问题的图片和我的代码

enter image description here

代码隐藏

using System;
using System.Web;
using MysqL.Data.MysqLClient;
using System.Configuration;
using iText.IO.Image;
using iText.Kernel.Colors;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Borders;
using iText.Layout.Element;
using iText.Layout.Properties;
using Image = iText.Layout.Element.Image;
using Table = iText.Layout.Element.Table;
using System.Data;
using iText.Kernel.Pdf.Action;
using iText.Kernel.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Geom;
using iText.Kernel.Events;
using iText.Kernel.Pdf.Canvas;
using Rectangle = iText.Kernel.Geom.Rectangle;
using iText.Layout.Renderer;
using iText.Layout.Layout;
using iText.Kernel.Pdf.Xobject;

private class TableFooterEventHandler : IEventHandler
{
    private Table table;

    public TableFooterEventHandler(Table table)
    {
        this.table = table;
    }

    public void HandleEvent(Event currentEvent)
    {
        PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent;
        PdfDocument pdfDoc = docEvent.GetDocument();
        pdfpage page = docEvent.GetPage();

        int pageNumber = pdfDoc.GetPageNumber(page);
        Rectangle pageSize = page.GetPageSize();

        PdfCanvas canvas = new PdfCanvas(page.NewContentStreamBefore(),page.GetResources(),pdfDoc);
        new Canvas(canvas,new Rectangle(36,20,page.GetPageSize().GetWidth() - 72,50))
            .Add(table)
            .Close();
    }

}

protected class Footer : IEventHandler
{
    protected PdfFormXObject placeholder;
    protected float side = 20;
    protected float x = 300;
    protected float y = 25;
    protected float space = 4.5f;
    protected float descent = 3;

    public Footer()
    {
        placeholder = new PdfFormXObject(new Rectangle(0,side,side));
    }

    public virtual void HandleEvent(Event @event)
    {
        PdfDocumentEvent docEvent = (PdfDocumentEvent)@event;
        PdfDocument pdf = docEvent.GetDocument();
        pdfpage page = docEvent.GetPage();
        int pageNumber = pdf.GetPageNumber(page);
        Rectangle pageSize = page.GetPageSize();

        // Creates drawing canvas
        PdfCanvas pdfCanvas = new PdfCanvas(page);
        Canvas canvas = new Canvas(pdfCanvas,pageSize);
        canvas.SetFontSize(10);


        Paragraph p = new Paragraph()
            .Add("Page ")
            .Add(pageNumber.ToString())
            .Add(" of");

        canvas.showtextAligned(p,x,y,TextAlignment.RIGHT);
        canvas.Close();

        // Create placeholder object to write number of pages
        pdfCanvas.AddXObjectAt(placeholder,y - descent);
        pdfCanvas.Release();


    }

    public void Writetotal(PdfDocument pdfDoc)
    {
        Canvas canvas = new Canvas(placeholder,pdfDoc);
        canvas.SetFontSize(10);
        canvas.showtextAligned(pdfDoc.GetNumberOfPages().ToString(),descent,TextAlignment.LEFT);
        canvas.Close();
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)