布鲁诺 { 这不是"我有普通的PDF文件,我想使用itext LIBRARY在PDF的末尾插入空白页,而不会打扰PDF内容。"
我尝试在源PDF中的每个页面之后添加空白页面 - 而不仅仅是源PDF文档末尾的1个空白页面。 } 使用C#(非Java) - 有没有人知道如何插入空白页(最好是A4 - Portrait 8.5 x 11)使用iTextSharp在PDF中的每一页之后,无论源PDF的页面大小和方向如何?源PDF的每个页面可以具有不同的大小和方向。
我尝试过以下方法。它似乎使每页后面的空白页面显示源PDF页面的方向和大小,但源PDF中的页面似乎是前一个空白页面的方向和大小:
private string DocumentWithBlankPagesInserted(string fileName, string userComments)
{
string outputFileName = v.tmp + @"\" + v.tmpDir + @"\" + Guid.NewGuid().ToString() + ".pdf";
Document document = new Document();
try
{
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFileName, FileMode.Create));
document.Open();
PdfContentByte cb = writer.DirectContent;
PdfReader reader = new PdfReader(fileName);
for (int pageNumber = 1; pageNumber < reader.NumberOfPages + 1; pageNumber++)
{
document.SetPageSize(reader.GetPageSizeWithRotation(pageNumber));
Chunk fileRef = new Chunk();
fileRef.SetLocalDestination(fileName);
PdfImportedPage page1 = writer.GetImportedPage(reader, pageNumber);
Rectangle psize = reader.GetPageSizeWithRotation(pageNumber);
switch (psize.Rotation)
{
case 0:
cb.AddTemplate(page1, 1f, 0, 0, 1f, 0, 0);
break;
case 90:
cb.AddTemplate(page1, 0, -1f, 1f, 0, 0, psize.Height);
break;
case 180:
cb.AddTemplate(page1, -1f, 0, 0, -1f, 0, 0);
break;
case 270:
cb.AddTemplate(page1, 0, 1.0F, -1.0F, 0, psize.Width, 0);
break;
default:
break;
}
document.NewPage();
document.Add(fileRef);
document.NewPage();
}
}
catch (Exception e)
{
throw e;
}
finally
{
document.Close();
}
return outputFileName;
}
答案 0 :(得分:1)
正如我在评论中所解释的,这个问题与How to add blank pages to an existing PDF in java?
重复您应该使用PdfStamper
而不是PdfWriter
(之前已经在StackOverflow的不同答案中解释了数十亿次)。使用InsertPage()
方法,您可以添加任意大小的页面:
PdfReader reader = new PdfReader(src);
PdfStamper stamper=new PdfStamper(reader, new FileStream(dest, FileMode.Create));
int total = reader.NumberOfPages + 1
for (int pageNumber = total; pageNumber > 0; pageNumber--) {
stamper.InsertPage(pageNumber, PageSize.A4);
}
stamper.Close();
reader.Close();
请注意,我以相反的顺序添加页面。这是基本逻辑:添加页面会更改页面数量,如果您从页面pageNumber
转到1
,则很难跟踪total
。反方向更容易。