Ich arbeite an einem PDF-Druckprozessor, mit PDFsharp & MigraDoc. Ich erstelle zusammengeführte PDFs mit 2.000 bis 10.000 Seiten. Der Druckerhersteller, der die von diesem Programm generierten PDFs druckt, beklagt sich über die Dateigrößen und den Zeitaufwand für die Verarbeitung der PDFs aufgrund der eingebetteten Schriftarten. Ich habe die eingebetteten Schriften in Adobe Acrobat Reader DC gesehen und kann sehen, dass es Tonnen von vollständig eingebetteten Schriften und Untergruppen gibt.C# .NET - PDFsharp & MigraDoc - Schriftarten eingebettet überall - Massive Dateigröße
Es werden nur zwei Schriftarten im gesamten Dokument verwendet, aber es sieht so aus, als ob jedes Element auf jeder Seite in den PDFs diese beiden Schriftarten eingebettet hat. Sagen Sie einfach, wenn es 10 Elemente auf einer Seite gibt und 10.000 Seiten, das sind 20.000 eingebettete Schriftarten.
Das erste, was ich angeschaut habe, war die Schriftart Optionen in PDFsharp & MigraDoc verwendet. Es gibt eine Option für die Schriftarteneinbettung.
var renderer = new PdfDocumentRenderer(true, PdfFontEmbedding.None);
var options = new XPdfFontOptions(PdfFontEmbedding.None);
using (var gfx = XGraphics.FromPdfPage(currentPage))//currentPage is of type PdfPage
{
gfx.MFEH = PdfFontEmbedding.None;
...
Ursprünglich diese Einbettung Optionen PdfFontEmbedding.Always
gesetzt wurden, aber ich änderte sie .None
der Hoffnung, dass das Problem gelöst werden würde. Es war nicht. In der Tat hat sich nichts geändert. Immer noch die gleiche Menge an eingebetteten Schriften und hatte die gleiche Größe.
Der Druckerverkäufer rief mich an und informierte mich, dass er das PDF genommen, es in Postscript und dann zurück in PDF umgewandelt und die Dateigröße um zwei Drittel reduziert hatte und die gesamte Schrifteinbettung weg war.
Für was ich über Postscript (im Grunde, nichts) weiß, nehme ich an, dass die Schriften nicht mehr eingebettet sind, weil die Datei eine Art Vektorformat oder etwas ist und der Text nicht mehr ausgewählt werden kann. Ich denke, das ist kein Problem für den Kunden oder den Verkäufer. Sie schienen mit der Idee zufrieden zu sein, die generierten PDFs in Postscript-Dateien und dann zurück in PDF zu konvertieren.
Also habe ich nach Möglichkeiten gesucht, diese Konvertierungen in C# zu tun, aber habe nicht wirklich viel gefunden. Ich habe einige Dinge über die Verwendung von Ghostscript oder Ghostscript.Net gesehen. Die Dokumentation dazu fehlt ziemlich und ich habe keine guten Beispiele gesehen.
Kennt jemand eine gute Möglichkeit, diese Konvertierungen durchzuführen, verwenden Sie PDFsharp und/oder MigraDoc, um Schriften davon abzuhalten, eingebettet zu werden, oder wissen Sie eine andere gute Lösung für dieses Problem?
Vielen Dank für die Antwort. Es hat super funktioniert. Nahm eine meiner größeren PDFs von fast 1 GB auf 18 MB herunter. Der Kunde ist sehr glücklich. – shaneOverby