C# ITextSharp将页码添加到合并的pdf
我正在尝试将页码添加到使用FileStream构建的合并pdf中,该文件来自上传到我的服务器的各个pdf。我从MSSQL服务器读取pdf文件名列表,然后合并页面 我知道我很可能应该使用pdfstamper,但大多数示例与我的特定代码无关C# ITextSharp将页码添加到合并的pdf,c#,asp.net,sql-server,pdf,itextsharp,C#,Asp.net,Sql Server,Pdf,Itextsharp,我正在尝试将页码添加到使用FileStream构建的合并pdf中,该文件来自上传到我的服务器的各个pdf。我从MSSQL服务器读取pdf文件名列表,然后合并页面 我知道我很可能应该使用pdfstamper,但大多数示例与我的特定代码无关 try { rdr = cmd2.ExecuteReader(); DataTable dt = new DataTable(); dt.Load(rdr); List<PdfReader> readerList =
try
{
rdr = cmd2.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(rdr);
List<PdfReader> readerList = new List<PdfReader>();
foreach (DataRow row in dt.Rows)
{
PdfReader pdfReader = new PdfReader("http://site.azurewebsites.net/uploads/reports/" +
Convert.ToString(row[0]));
readerList.Add(pdfReader);
}
con2.Close();
System.Net.Mime.ContentType contentType = new System.Net.Mime.ContentType();
contentType.MediaType = System.Net.Mime.MediaTypeNames.Application.Pdf;
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
//Get instance response output stream to write output file.
PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
document.Open();
foreach (PdfReader reader in readerList)
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
document.Add(iTextSharp.text.Image.GetInstance(page));
}
}
document.Close();
Response.AppendHeader("content-disposition", "inline; filename=" + Request.QueryString["id"] + "-Final");
Response.ContentType = "application/pdf";
}
}
catch
{
Response.Redirect("~/login.aspx", false);
}
}
private void MergePDFs(string outPutFilePath, params string[] filesPath)
{
List<PdfReader> readerList = new List<PdfReader>();
foreach (string filePath in filesPath)
{
PdfReader pdfReader = new PdfReader(filePath);
readerList.Add(pdfReader);
}
//Define a new output document and its size, type
Document document = new Document(PageSize.A4, 0, 0, 0, 0);
//Create blank output pdf file and get the stream to write on it.
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outPutFilePath, FileMode.Create));
document.Open();
foreach (PdfReader reader in readerList)
{
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
document.Add(iTextSharp.text.Image.GetInstance(page));
}
}
document.Close();
}
试试看
{
rdr=cmd2.ExecuteReader();
DataTable dt=新的DataTable();
dt.荷载(rdr);
List readerList=新列表();
foreach(数据行中的数据行)
{
PdfReader PdfReader=新PdfReader(“http://site.azurewebsites.net/uploads/reports/" +
Convert.ToString(行[0]);
readerList.Add(pdfReader);
}
con2.Close();
System.Net.Mime.ContentType ContentType=新的System.Net.Mime.ContentType();
contentType.MediaType=System.Net.Mime.MediaTypeNames.Application.Pdf;
文档=新文档(PageSize.A4,0,0,0);
//获取实例响应输出流以写入输出文件。
PdfWriter writer=PdfWriter.GetInstance(document,Response.OutputStream);
document.Open();
foreach(阅读器列表中的PdfReader阅读器)
{
对于(int i=1;i我在这里找到了解决方案(它几乎显示页码,但不显示总页数)。因为看起来您已经获得了将文件合并在一起的代码。如果您想将文本添加到pdf,您可以使用PdfStamper
以下代码是我用于将文本添加到pdf的代码(您需要在x和y点将其放置到所需的位置)
使用(var newPDF=newfilestream(outPutFile,FileMode.Create,FileAccess.ReadWrite))
{
PdfReader PdfReader=新PdfReader(读卡器);
PdfStamper PdfStamper=新PdfStamper(pdfReader,新PDF);
对于(int page=1;page)您的问题是什么?这里没有明确的问题。我正在尝试将pdf页码添加到每个合并的pdf文件中,如“第1页,共5页”。我已经找到了类似的示例,但正在努力将pdfstamper合并到我的代码中。
using (var newPDF = new FileStream(outPutFile, FileMode.Create, FileAccess.ReadWrite))
{
PdfReader pdfReader = new PdfReader(reader);
PdfStamper pdfStamper = new PdfStamper(pdfReader, newPDF);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
PdfContentByte pdfContent = pdfStamper.GetOverContent(page);
Rectangle mediabox = pdfReader.GetPageSize(page);
pdfContent.BeginText();
pdfContent.ShowTextAligned(0, "someText", xLocation, mediabox.Height - yLocation , 0);
pdfContent.EndText();
}
pdfStamper.Close();
}