Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当前页码和文档';s号码页_C#_Asp.net_Pdf Generation_Itextsharp - Fatal编程技术网

C# 当前页码和文档';s号码页

C# 当前页码和文档';s号码页,c#,asp.net,pdf-generation,itextsharp,C#,Asp.net,Pdf Generation,Itextsharp,我正在尝试用iTextSharp制作PDF文档 我不知道如何使用“currentPageNumber/DocumentsUnberofPages”这样的标题: 后续问题 目前,根据最初的答案,我有以下几点: public class StockComp : iTextSharp.text.pdf.PdfPageEventHelper { PdfTemplate templateNumPage; public string Header { get;

我正在尝试用iTextSharp制作PDF文档

我不知道如何使用“currentPageNumber/DocumentsUnberofPages”这样的标题:

后续问题

目前,根据最初的答案,我有以下几点:

public class StockComp : iTextSharp.text.pdf.PdfPageEventHelper
{
    PdfTemplate templateNumPage;

    public string Header
    {
        get;
        set;
    }

    public override void OnOpenDocument(PdfWriter writer, Document document)
    {
        templateNumPage = writer.DirectContent.CreateTemplate(30, 250);
    }

    public override void OnEndPage(PdfWriter writer, Document document)
    {
        PdfPTable table = new PdfPTable(3);
        try
        {
            table.SetWidths(new int[] { 10, 10, 2 });
            table.TotalWidth = 800;
            table.LockedWidth = true;
            table.DefaultCell.FixedHeight = 20;
            table.DefaultCell.Border = Rectangle.BOTTOM_BORDER;
            table.AddCell(Header);
            table.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;
            table.AddCell(string.Format("Page {0} of", writer.PageNumber));
            PdfPCell cell = new PdfPCell(Image.GetInstance(templateNumPage));
            cell.Border = Rectangle.BOTTOM_BORDER;
            table.AddCell(cell);
            table.WriteSelectedRows(0, -1, 34, 803, writer.DirectContent);
        }
        catch (DocumentException de)
        {
            throw de;
        }
    }

    public override void OnCloseDocument(PdfWriter writer, Document document)
    {
        ColumnText.ShowTextAligned(templateNumPage, Element.ALIGN_LEFT, new Phrase((writer.PageNumber - 1).ToString()), 2, 2, 0);
    }
}
但是,我不明白为什么,它只是显示“templateNumPage”,而没有显示包含“Header”和“Page{0}”的第一个和第二个单元格

我声明我的文件如下:

// On récupère le n ombre de lignes et de colonne de la GridView
        int noOfColumns = gvReportingStockComp.Columns.Count;
        int noOfRows = gvReportingStockComp.Rows.Count;

        // On fixe les informations concernant les tailles de police du document PDF
        float HeaderTextSize = 8;
        float ReportNameSize = 10;
        float ReportTextSize = 8;
        float ApplicationNameSize = 7;

        // --- On crée le document final --- \\
        Document document = null;
        // Le document final sera-t-il en mode paysage ou non
        bool LandScape = true;
        if (LandScape == true)
        {
            // Comme le document est en mode paysage, on execute une rotation sur ces dimensions
            // Les 4 derniers paramètres de la fonction correspondent aux marges du document sur les bords
            document = new Document(PageSize.A4.Rotate(), -50, -50, 50, 30);
        }
        else
        {
            // On spécifie les dimensions du document
            // Les 4 derniers paramètres de la fonction correspondent aux marges du document sur les bords
            document = new Document(PageSize.A4, 0, 0, 0, 0);
        }

        // --- On instancie le Writer et la classe d'evenement associée --- \\
        // Le flux de sortie
        PdfWriter pdfW = PdfWriter.GetInstance(document, Response.OutputStream);
        // La classe évenement associée
        StockComp evenement = new StockComp();
        pdfW.PageEvent = evenement;

        // --- Ouverture du document --- \\
        document.Open();

        // --- On ajoute les valeurs dans le document --- \\

        // On créer un PdfTable qui contient le même nombre de colonne que la GridView
        // On ajoute 3 car l'on souahite que la cellule composant ait une taille de 4
        // et le autre cellule une taille de 1.
        PdfPTable mainTable = new PdfPTable(noOfColumns+3); 

        // Notre document sera composé de au minimum 4 lignes :
        // 1 : Nom appli + Date
        // 2 : Titre du tableau
        // 3 : Saut de ligne
        // 4 : Headers du tableau
        // X : Lignes du tableau
        mainTable.HeaderRows = 4;

        evenement.Header = "Trèves";

        // On génère les noms de colonnes et on les insèrent
        for (int i = 0; i < noOfColumns; i++)
        {
            PdfPCell cell = null;

            Phrase ph = null;

            ph = new Phrase(gvReportingStockComp.Columns[i].HeaderText, FontFactory.GetFont("Tahoma", HeaderTextSize, iTextSharp.text.Font.BOLD));

            cell = new PdfPCell(ph);

            cell.HorizontalAlignment = Element.ALIGN_CENTER;

            if (i == 1)
            {
                cell.Colspan = 4;
            }

            mainTable.AddCell(cell);
        }

document.Add(mainTable);

//pdfW.PageNumber*/
document.Close();
//关于网格视图中的路线和柱状图
int noOfColumns=gvReportingStockComp.Columns.Count;
int noOfRows=gvReportingStockComp.Rows.Count;
//关于固定信息的相关信息,请参阅文件PDF
浮头TEXTSIZE=8;
float ReportNameSize=10;
float ReportTextSize=8;
float ApplicationNameSize=7;
//---在crée le文件最终版上--\\
单据=空;
//文件最终sera-t-il en模式付款
布尔景观=真实;
如果(横向==真)
{
//在执行非旋转表面尺寸时,在模式付款时使用Comme le document est
//Les 4 derniers paramètres de la fonction通讯员aux marges du document sur Les bords
document=新文档(PageSize.A4.Rotate(),-50,-50,50,30);
}
其他的
{
//关于文件的规格
//Les 4 derniers paramètres de la fonction通讯员aux marges du document sur Les bords
文档=新文档(PageSize.A4,0,0,0);
}
//---关于作家和晚班协会的实例--\\
//出动通量酒店
PdfWriter pdfW=PdfWriter.GetInstance(document,Response.OutputStream);
//高级会议协会
StockComp Evenment=新的StockComp();
pdfW.PageEvent=晚上;
//----文件中的文件--\\
document.Open();
//---在一份文件上--\\
//关于网格视图中的柱状图名称
//在一辆3号车上,一辆4号车上有一个小单元
//这是一个完整的单元。
PdfPTable mainTable=新的PdfPTable(noOfColumns+3);
//Notre document sera composéde au至少4条路线:
//1:名称应用+日期
//2:画面标题
//3:炒木
//4:表格标题
//X:画面线
mainTable.HeaderRows=4;
evenement.Header=“Trèves”;
//论《科隆的名字》等
for(int i=0;i

请帮帮我。谢谢;)

我不能帮你处理页眉(我的电脑也因为某些原因没有显示图像…),但要在iTextSharp中获取页码,你可以:

iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(documentImage);
// may want to check if pdfReader is null before doing below
int numPages = pdfReader.NumberOfPages;
其中
documentImage
的类型为
byte[]
,但您可以使用
PdfReader
的任何重载。

示例/说明了如何使用页面X/Y信息创建文档

中央构造块是一个添加标题信息的
PdfPageEventHelper

/**
 * Inner class to add a table as header.
 */
protected class TableHeader : PdfPageEventHelper {
  /** The template with the total number of pages. */
  PdfTemplate total;

  /** The header text. */
  public string Header { get; set; }

  /**
   * Creates the PdfTemplate that will hold the total number of pages.
   */
  public override void OnOpenDocument(PdfWriter writer, Document document) {
    total = writer.DirectContent.CreateTemplate(30, 16);
  }

  /**
   * Adds a header to every page
   */
  public override void OnEndPage(PdfWriter writer, Document document) {
    PdfPTable table = new PdfPTable(3);
    try {
      table.SetWidths(new int[]{24, 24, 2});
      table.TotalWidth = 527;
      table.LockedWidth = true;
      table.DefaultCell.FixedHeight = 20;
      table.DefaultCell.Border = Rectangle.BOTTOM_BORDER;
      table.AddCell(Header);
      table.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;
      table.AddCell(string.Format("Page {0} of", writer.PageNumber));
      PdfPCell cell = new PdfPCell(Image.GetInstance(total));
      cell.Border = Rectangle.BOTTOM_BORDER;
      table.AddCell(cell);
      table.WriteSelectedRows(0, -1, 34, 803, writer.DirectContent);
    }
    catch(DocumentException de) {
      // ...
      throw de;
    }
  }

  /**
   * Fills out the total number of pages before the document is closed.
   */
  public override void OnCloseDocument(PdfWriter writer, Document document) {
    ColumnText.ShowTextAligned(
      total, Element.ALIGN_LEFT,
// NewPage() already called when closing the document; subtract 1
      new Phrase((writer.PageNumber - 1).ToString()),
      2, 2, 0
    );
  }
}
它是这样使用的:

// step 1
using (Document document = new Document(PageSize.A4, 36, 36, 54, 36)) {
  // step 2
  PdfWriter writer = PdfWriter.GetInstance(document, stream);
  TableHeader tevent = new TableHeader();
  writer.PageEvent = tevent;
  // step 3
  document.Open();
  [...]
}
注意:上面的
onedpage
代码所写的表格格式为纵向A4文档。如果使用横向文档大小,则必须调整一些值,即
TotalWidth
527
表的书写坐标
34803


还有一种选择。Cf..

可能是Smartis的复制品,这并不好笑。。。谢谢布鲁诺,我会看的。谢谢,我已经编辑了我的帖子,因为我还有一个问题:/编辑这样的问题是非常糟糕的风格。现在,所有的评论和答案似乎都不再合适了。当你有其他问题时,创建一个新问题。或者至少,如果问题相互关联,则保留原始问题文本,并在下方添加标题为“跟进问题”的其他问题。不过,关于您的问题,我在回答中添加了一条警告,涉及硬编码到样本中的表格宽度和位置;如果您使用的是不同的文档格式,那么也必须调整那些硬编码的值。您的代码当前使用A4横向。因此,丢失的单元格很可能位于页面边框上方。此外,您还使用负边距。从长远来看,我怀疑你会对它们感到满意。此外,你似乎只为两列添加单元格。这张桌子有三个!我想第三个是宽度化妆品。谢谢,我会试试的。很抱歉,我的后期编辑,我没有正确理解这个论坛的规则;)