Следующий код используется для объединения нескольких файлов в формате PDF в один файлITextSharp слиты размер Pdf увеличился
public byte[] MergePdfFiles(IEnumerable<byte[]> files)
{
using (var stream = new MemoryStream())
{
var pdfDoc = new iTextSharp.text.Document();
var pdf = new PdfCopy(pdfDoc, stream);
pdf.SetMergeFields();
pdfDoc.Open();
foreach (var file in files)
{
try
{
pdf.AddDocument(new PdfReader(file));
}
catch (InvalidPdfException ex)
{
_loggingServiceClient.Log(LogLevel.Error, ex);
throw;
}
}
pdfDoc.Close();
return stream.GetBuffer();
}
}
код работает отлично, НО генерируемый размер файла почти в два раза превышает общий размер всех присоединяемых файлов. Я пытаюсь добавить некоторые инструкции сжатия, такие как pdf.CompressionLevel = PdfStream.BEST_COMPRESSION;
и pdf.SetFullCompression();
без каких-либо успехов.
Обратите внимание, что выполнение простого saveAs в acrobat reader из сгенерированного файла приводит к новому файлу с приличным размером (объединенный размер каждого объединенного файла).
Я также пробовал другие способы слияния файла, например, используя метод addPage, который в конечном итоге тот же.