Der folgende Code verwendet wird, um mehrere PDF-Datei in einer einzigen DateiiTextSharp pdf Größe fusionierte erhöht
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();
}
}
Der Code funktioniert gut, aber die erzeugte Dateigröße ist fast das Doppelte der Gesamtgröße aller fusionierten Dateien zu verschmelzen. Ich versuche, einige Komprimierungsanweisungen wie pdf.CompressionLevel = PdfStream.BEST_COMPRESSION;
und pdf.SetFullCompression();
ohne Erfolg hinzuzufügen.
Beachten Sie, dass das Ausführen einer einfachen saveAs in Acrobat Reader aus der generierten Datei in neue Datei mit einer anständigen Größe (die kombinierte Größe aller zusammengeführten Dateien) resultiert.
Ich habe auch andere Möglichkeiten versucht, Datei zusammenzuführen, wie zum Beispiel mit der Methode addPage, die am Ende gleich.