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();
答案 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();
}