开发学院

您的位置:首页>技术文章>正文

技术文章

C#压缩pdf文件的代码示例

开发学院2023-06-06 13:25:29
最近有压缩pdf的需求,上网找了下iTextSharp可以进行压缩,下面是实现代码,依赖版本:iTextSharp.5.5.13.3。

  最近有压缩pdf的需求,上网找了下iTextSharp可以进行压缩,下面是实现代码,依赖版本:iTextSharp.5.5.13.3。

using iTextSharp.text;
using iTextSharp.text.pdf;

public void compressPdf(string inputFile, string outputFile)
        {
            using (FileStream fileStream = new FileStream(outputFile, FileMode.Create))
            {
                using (Document document = new Document())
                {
                    PdfReader reader = new PdfReader(inputFile);
                    PdfWriter writer = PdfWriter.GetInstance(document, fileStream);
                    writer.SetPdfVersion(PdfWriter.PDF_VERSION_1_5);

                    document.Open();

                    for (int i = 1; i <= reader.NumberOfPages; i++)
                    {
                        PdfImportedPage importedPage = writer.GetImportedPage(reader, i);
                        PdfContentByte contentByte = writer.DirectContent;//.GetDirectContent();
                        PdfTemplate template = contentByte.CreateTemplate(importedPage.Width, importedPage.Height);
                        template.AddTemplate(importedPage, 0, 0);

                        contentByte.AddTemplate(template, 0.5f, 0, 0, 0.5f, 0, 0);
                        document.NewPage();
                    }

                    document.Close();
                    writer.Close();
                    reader.Close();
                }
            }
        }

        public void compressPdf2(String stringsourceFile,String stringdestinationFile) {

            using (var sourceStream = new FileStream(stringsourceFile, FileMode.Open))
            using (var destinationStream = new FileStream(stringdestinationFile, FileMode.Create))
            { 
                var reader = new PdfReader(sourceStream);
                var pdfStamper = new PdfStamper(reader, destinationStream, PdfWriter.VERSION_1_5);

                pdfStamper.SetFullCompression();

                pdfStamper.Close();
                reader.Close();
            }

            Console.WriteLine("PDF compression complete.");
        }