【发布时间】:2018-08-14 05:47:32
【问题描述】:
我有许多包含许多页面的大型 pdf 文件。我必须将那些大的 pdf 拆分成多个小的 pdf 文件。
我有一个代码,可用于将大 pdf 拆分为多个小的 pdf 文件。 下面的代码,我用于拆分。
private void SplitAndSaveInterval(string pdfFilePath, string outputPath, int startPage, int interval, string pdfFileName)
{
using (PdfReader reader = new PdfReader(pdfFilePath))
{
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileStream(outputPath + "\\" + pdfFileName + ".pdf", FileMode.Create));
document.Open();
for (int pagenumber = startPage; pagenumber < (startPage + interval); pagenumber++)
{
if (reader.NumberOfPages >= pagenumber)
{
copy.AddPage(copy.GetImportedPage(reader, pagenumber));
}
else
{
break;
}
}
document.Close();
}
}
此代码取自https://www.c-sharpcorner.com/article/splitting-pdf-file-in-c-sharp-using-itextsharp/
我有一个添加页码的例程。附例程:
void AddPageNumber(string fileIn, string fileOut)
{
byte[] bytes = File.ReadAllBytes(fileIn);
Font blackFont = FontFactory.GetFont("Arial", 12, Font.NORMAL, BaseColor.BLACK);
using (MemoryStream stream = new MemoryStream())
{
PdfReader reader = new PdfReader(bytes);
using (PdfStamper stamper = new PdfStamper(reader, stream))
{
int pages = reader.NumberOfPages;
for (int i = 1; i <= pages; i++)
{
ColumnText.ShowTextAligned(stamper.GetUnderContent(i), Element.ALIGN_RIGHT, new Phrase(i.ToString(), blackFont), 568f, 15f, 0);
}
}
bytes = stream.ToArray();
}
File.WriteAllBytes(fileOut, bytes);
}
现在我的问题是如何从 SplitAndSaveInterval() 例程中合并或调用 AddPageNumber() 例程,以最终在新生成的 pdf 文件右上角的每个页面上添加页码。
寻求帮助和建议。谢谢
【问题讨论】:
-
您使用的是不再支持的旧版 iText。如果您升级到iText 7,您会注意到与 iText 5 相比,使用 iText 7 实现的目标要容易得多。
-
您所指的页面是我2009年写的那本书的非法副本。那是9年前的事了。请升级到 iText 7 或解释为什么不适合您。