我有一个要求,我必须合并多个PDF文档,并添加一些文本页面。 对于例如我已经从一个PDF复制了页面,现在我必须添加一个带有一些文本的页面,然后我需要从第二个PDF复制页面,然后我需要添加一个带有一些文本的页面......
我尝试合并PDF,但它只是合并了我希望在每个PDF文档后添加一些文本的PDF。
我想使用iTextSharp。以下是代码段:
//第1步:创建文档对象 文件文件=新文件();
// step 2: we create a writer that listens to the document
PdfCopy writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
if (writer == null)
{
return;
}
// step 3: we open the document
document.Open();
foreach (string fileName in fileNames)
{
// we create a reader for a certain document
PdfReader reader = new PdfReader(fileName);
reader.ConsolidateNamedDestinations();
// step 4: we add content
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
writer.AddPage(page);
}
//This commented part is not working
////Add a new page to the pdf file
//document.NewPage();
//Paragraph paragraph = new Paragraph();
//Font titleFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA
// , 15
// , iTextSharp.text.Font.BOLD
// , BaseColor.BLACK
// );
//Chunk titleChunk = new Chunk("Comments", titleFont);
//paragraph.Add(titleChunk);
//writer.Add(paragraph);
//paragraph = new Paragraph();
//Font textFont = new Font(iTextSharp.text.Font.FontFamily.HELVETICA
// , 12
// , iTextSharp.text.Font.NORMAL
// , BaseColor.BLACK
// );
//Chunk textChunk = new Chunk("Hello", textFont);
//paragraph.Add(textChunk);
//writer.Add(paragraph);
//document.Add(paragraph);
reader.Close();
}
// step 5: we close the document and writer
writer.Close();
document.Close();
提前致谢。
答案 0 :(得分:0)
您无法将document.newPage()
与PdfCopy
结合使用。如果要插入包含动态创建内容的额外页面,则需要在内存中创建新文档:Create PDF in memory instead of physical file
例如,您可以创建此方法:
private byte[] CreatePdf(String comments)
{
Document doc = new Document(PageSize.LETTER);
using (MemoryStream output = new MemoryStream())
{
PdfWriter wri = PdfWriter.GetInstance(doc, output);
doc.Open();
Paragraph header = new Paragraph("Comments");
doc.Add(header);
Paragraph paragraph = new Paragraph(comments);
doc.Add(paragraph);
doc.Close();
return output.ToArray();
}
}
在您的代码中,您可以使用以下方法:
writer.AddDocument(new PdfReader(CreatePdf("Test comment")););
请注意,您无需遍历页面。你有:
for (int i = 1; i <= reader.NumberOfPages; i++)
{
PdfImportedPage page = writer.GetImportedPage(reader, i);
writer.AddPage(page);
}
您可以使用:
writer.AddDocument(reader);