以正确的顺序将jpeg添加到pdf中c#itextsharp

时间:2016-01-11 12:44:39

标签: c# foreach itextsharp

Good Afternoon All,

我正在尝试将文件夹中的所有jpegs合并到pdf中。在文件夹中,它们的编号如下“Filename_0”,“FileName_1”,“FileName_2”等。但是当我使用文件夹中的foreach文件添加它们时,它们的顺序错误,即0, 1,10,11等。这些是文档的页面,因此顺序很重要。知道是否有办法在foreach循环中指定顺序?

using (var stream = new FileStream(PDFName, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                writer.SetFullCompression();
                document.Open();

                foreach (var files in d.GetFiles("*.jpg"))
                {
                    using (var imageStream = new FileStream(files.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        Image image = Image.GetInstance(imageStream);
                        image.ScaleToFit(PageSize.A4);
                        document.NewPage();
                        document.Add(image);

                    }


            }
            document.Close();

2 个答案:

答案 0 :(得分:1)

快速而肮脏(编辑:我忘记了扩展程序):

forceUpdate()

答案 1 :(得分:0)

我设法以稍微不同的方式解决了我的问题。我最初将多页tiff转换为jpegs以减小大小,我发现我可以按创建日期对jpegs进行排序,因为它在完成此代码执行之前完成并以正确的顺序创建。这是我用过的,以防任何人使用它。

 using (var stream = new FileStream(PDFName, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                PdfWriter writer = PdfWriter.GetInstance(document, stream);
                writer.SetFullCompression();
                document.Open();

            FileSystemInfo[] filez = d.GetFileSystemInfos();
            var filesInOrder = filez.OrderBy(f => f.CreationTime);


            foreach (var files in filesInOrder)
                {
                    using (var imageStream = new FileStream(files.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        Image image = Image.GetInstance(imageStream);
                        image.ScaleToFit(PageSize.A4);
                        document.NewPage();
                        document.Add(image);

                    }
            }
            document.Close();
        }