2016-05-31 18 views
-5

Ich möchte PDF-Datei in die Datenbank speichern, wenn die PDF-Datei mehr als 5 MB ist dann Datenbank wird Heavy oder Burden für mehr no.of files.so, dass ich will verkleinern Sie die Größe der PDF-Datei so wenig wie möglich .... Ich habe versucht den folgenden Code, aber nicht funktioniert.Klicken Sie Hilfe, um große PDF auf kleinere Größe zu komprimieren.Zum Beispiel, wenn PDF-Größe 2 MB ist, wird es auf 700 KB komprimieren. Ich habe so viele Beispiele ausprobiert, aber keine Ausgabe bekommen. so wenden Sie sich bitte helfen ..Komprimieren PDF zu kleineren Größe (dh 1 MB bis 300 KB) in C#

 PdfReader reader = new PdfReader("D:/User Guid for Artificial Skin.pdf"); 
     PdfStamper stamper = new PdfStamper(reader, new FileStream("d:/pdfdoccompressed.pdf", FileMode.Create), PdfWriter.VERSION_1_5); 
     reader.SetPageContent(1, reader.GetPageContent(1)); 
     int pageNum = reader.NumberOfPages; 
     for (int i = 1; i <= pageNum; i++) 
     { 
      reader.SetPageContent(i, reader.GetPageContent(i)); 
     } 
     stamper.FormFlattening = true; 
     stamper.Writer.CompressionLevel = PdfStream.BEST_COMPRESSION; 
     stamper.SetFullCompression(); 
     stamper.Close(); 
+3

Woran denken Sie, dass Sie das PDF noch weiter komprimieren können? – CodeCaster

+0

Entschuldigung, ich verstehe nicht, was Sie gesagt haben –

+1

Sie sagen, Sie haben eine Beispieldatei von 1 MB, und diese Datei soll auf 300 KB komprimiert werden. Warum haben Sie die Erwartung, dass dies möglich ist? Verarbeitet andere Software dieselbe Datei? Weißt du wie Kompression funktioniert? – CodeCaster

Antwort

0

Der Punkt mit lossless compression ist, dass es ein Ende, wie viel Sie Daten komprimieren kann. Wenn Sie die Datei als Container ansehen und einen generischen Komprimierungsalgorithmus anwenden, wird die Datei nicht um einiges abgelassen, da sie bereits standardmäßig optimal gespeichert wird.

Sehr vereinfacht: PDF-Dateien können in der Regel nur deutlich verkleinert werden, wenn sie viele unbenutzte (eingebettete) Objekte wie Schriften und Formularfelder sowie nicht optimierte Bilder enthalten. Jeder Optimierer, den Sie finden, legt einfach die unbenutzten Objekte ab und verkleinert diese, indem er sie entweder in weniger Punkten pro Zoll ("kleinere Auflösung"), weniger Bits pro Pixel ("kleinere Bittiefe") oder in beiden speichert.

Also, indem Sie PdfStream.BEST_COMPRESSION zu PdfStamper übergeben, tun Sie bereits alles, was Sie können. Sie können die PDF-Datei nicht viel einfacher und signifikant komprimieren, als es PdfStamper bereits tut.

Aus Ihren Kommentaren und Änderungen scheint jedoch, Sie haben Angst, dass dies in der Zukunft Ihre Datenbank verletzen wird (obwohl es Daten und eine Menge davon enthalten soll). Aber diese Sorge ist nicht konkret genug, um Ihnen zu helfen.

sehen also eine der vielen früheren Diskussionen darüber, ob Sie tatsächlich Ihre Daten so gespeichert werden sollte:

Und viele, viele andere.