Я новичок в использовании iTextSharp и работает с файлами Pdf в целом, но я думаю, что я на правильном пути.
Я перебираю список файлов PDF, конвертирую их в байты и выталкиваю все полученные байты в массив байтов. Оттуда я передаю массив байтов в concatAndAddContent(), чтобы объединить весь PDF файл в один большой pdf файл. В настоящее время я просто получаю последний pdf файл в списке (они, похоже, переписываются)
public static byte[] concatAndAddContent(List<byte[]> pdfByteContent)
{
byte[] allBytes;
using (MemoryStream ms = new MemoryStream())
{
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
doc.SetPageSize(PageSize.LETTER);
doc.Open();
PdfContentByte cb = writer.DirectContent;
PdfImportedPage page;
PdfReader reader;
foreach (byte[] p in pdfByteContent)
{
reader = new PdfReader(p);
int pages = reader.NumberOfPages;
// loop over document pages
for (int i = 1; i <= pages; i++)
{
doc.SetPageSize(PageSize.LETTER);
doc.NewPage();
page = writer.GetImportedPage(reader, i);
cb.AddTemplate(page, 0, 0);
}
}
doc.Close();
allBytes = ms.GetBuffer();
ms.Flush();
ms.Dispose();
}
return allBytes;
}
Выше приведен рабочий код, в результате которого создается один PDF файл, а остальные файлы игнорируются. Любые предложения