ERLEDIGT
JA
JA
ANTWORTEN
3
3
ZUGRIFFE
986
986
EMPFEHLEN
-
Hallo Tutorials User,
Ich habe mal wieder ein Problem...
Infos:
Ich nutze die ProgSprache C# in VB Express 2010, zu meinem Projekt habe ich die ItextSharp Library hinzugefügt.
Ich habe eine Funktion die PDF-Datei merged.
Code:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
private bool MergePDFs(string outputPath) { bool result = false; int currentPdfPageCount = 0; int currentPage = 0; int rotation = 0; string currentPdfFilename = null; Document pdfOutputDoc = new Document(); PdfWriter writer = null; PdfReader reader = null; PdfContentByte cb = null; PdfImportedPage page = null; try { if (dgvPdfs.Rows.Count > 0) { currentPdfFilename = dgvPdfs[0, 0].Value.ToString(); reader = new PdfReader(currentPdfFilename); pdfOutputDoc = new Document(reader.GetPageSizeWithRotation(1)); writer = PdfWriter.GetInstance(pdfOutputDoc, new FileStream(outputPath, FileMode.Create)); pdfOutputDoc.Open(); cb = writer.DirectContent; for (int rowIndex = 0; rowIndex < dgvPdfs.Rows.Count - 1; rowIndex++) { currentPdfFilename = dgvPdfs[0, rowIndex].Value.ToString(); FileInfo fiCurrentPdf = new FileInfo(currentPdfFilename); if (fiCurrentPdf.Exists) { reader = new PdfReader(currentPdfFilename); if (dgvPdfs[1, rowIndex] == null || Convert.ToInt32(dgvPdfs[1, rowIndex].Value) > reader.NumberOfPages) currentPage = 0; else currentPage = Convert.ToInt32(dgvPdfs[1, rowIndex].Value) - 1; if (dgvPdfs[2, rowIndex] == null || Convert.ToInt32(dgvPdfs[2, rowIndex].Value) > reader.NumberOfPages) currentPdfPageCount = reader.NumberOfPages; else currentPdfPageCount = Convert.ToInt32(dgvPdfs[2, rowIndex].Value); while (currentPage < currentPdfPageCount) { currentPage++; pdfOutputDoc.SetPageSize(reader.GetPageSizeWithRotation(currentPage)); pdfOutputDoc.NewPage(); page = writer.GetImportedPage(reader, currentPage); rotation = reader.GetPageRotation(currentPage); if (rotation == 90) cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, reader.GetPageSizeWithRotation(currentPage).Height); else if (rotation == 270) cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, reader.GetPageSizeWithRotation(currentPage).Width + 60, -30); else cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0); } } else if (!fiCurrentPdf.Exists) MessageBox.Show("Die Datei\r\n" + currentPdfFilename + "\r\nexistiert nicht!"); } pdfOutputDoc.Close(); MessageBox.Show("Merging abgeschlossen!"); } } catch { MessageBox.Show("Merging failed!"); } return result; }
Problem:
Die Merge Funktion funktioniert genauso wie sie soll, es gibt nur ein Problem...
Die Datei die herauskommt wird sehr groß, größer als andere PDFs mit der gleichen Seitenanzahl.
Frage:
Weiß jemand wie man diese PDF wieder kleiner bekommt?
Wenn man sie mit Acrobat öffnet und speichern unter macht dann wird sie wesentlich kleiner (bis zu 70%).
Aber dieser Vorgang soll automatisiert ablaufen....
Noch besser wäre es natürlich, wenn die Dateien gar nicht erst so groß werden.
Schon mal Danke für das Interesse und die eventuelle Hilfe
mfG
CShark
-
Also ich habe keine Möglichkeit gefunden die Dateien klein zu halten.
Aber ich habe jetzt eine Möglichkeit gefunden die Dateien WESENTLICH zu verkleinern, falls jemand wissen will wie es geht, einfach Fragen.
-
Und warum sagst du es nicht einfach von dir aus?
Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Ich verkleinere die PDFs mit Hilfe des Programms ghostscript.
Ich habe mich für ghostscript entschieden, da es Batchfähig ist und ich es somit automatisch anstarten kann und so der ganze Ablauf automatisch ist.
Ich lasse einfach durch mein Programm, welches die PDFs erstellt die Batch anstarten und die PDF dann verkleinern.
Ich habe leider keine Möglichkeit gefunden die PDFs von Anfang an klein zu halten.
Ähnliche Themen
-
Originalfarben verringern
Von Viviana im Forum Sonstige Grafik-ProgrammeAntworten: 0Letzter Beitrag: 21.01.11, 15:09 -
Farbauftrag verringern
Von sight011 im Forum Desktop Publishing (DTP)Antworten: 1Letzter Beitrag: 05.04.10, 03:06 -
Prozessgröße verringern
Von Freaky_09 im Forum .NET Application und Service DesignAntworten: 2Letzter Beitrag: 04.01.07, 14:31 -
Abfragedauer verringern?
Von chris4712 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 17.03.06, 17:13 -
BpS erhöhen / verringern
Von pascalplus im Forum Flash PlattformAntworten: 4Letzter Beitrag: 12.04.05, 15:45





Zitieren

Login





