PDF Größe verringern

CShark

Mitglied
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:
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
 

CShark

Mitglied
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.
 

CShark

Mitglied
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.