【发布时间】:2017-05-20 19:05:20
【问题描述】:
对于布鲁诺 { 这不是“我有普通的 PDF 文件,我想使用 itext LIBRARY 在 PDF 末尾插入空白页,而不影响 PDF 内容”的副本。
我正在尝试在源 PDF 的每一页之后添加一个空白页 - 而不仅仅是在源 PDF 文档的末尾添加一个空白页。 } 使用 C#(非 Java)- 有谁知道如何使用 iTextSharp 在 PDF 中的每一页之后插入空白页(最好是 A4-纵向 8.5 x 11),而不管源 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;
}
【问题讨论】:
-
请停止使用非官方示例。他们错了吗?为什么你会忽略官方的 iText 网站,而偏爱那些不了解 iText 的人的例子???使用
PdfStamper(NOTPdfWriter) 和InsertPage()方法插入空白页。 -
@Bruno - 我没有在他们的网站上看到有关此特定问题的官方 iTextSharp 示例。能否提供一个链接?
-
官网的例子见How to add blank pages to an existing PDF in java?大写部分改小写(如将
close()改成Close()和insertPage()改成InsertPage())你的解决方案。 (请不要告诉我做出这样的改变很困难。) -
认真的吗?您更改了您的问题,说您需要一个 C# 示例,因为您不知道如何将
c更改为C和将i更改为I? -
您提供的示例是用 Java 编写的,仅适用于文档的最后一页。我正在使用 C#,我试图在文档的每一页之后插入一个空白页。请不要将此标记为重复,因为它不是重复的问题。