【发布时间】:2019-07-16 21:01:17
【问题描述】:
我需要将图像(如 .jpg)转换为 PDF 文件以用于学校作业。我有一个ListBox,我在其中放置了 PDF 文件的页面,因此用户可以重新排序列表并按该顺序转换文件。
我有一个临时文件夹中的文件,以便将文件转换为 PDF。
我的问题是:如何按照用户选择的顺序转换文件?
我已经搜索过,并尝试使用字符串 ID 和 Name 进行类,因此我从 ListBox 中的项目中获取 ID 并将其更改为新列表。我想之后,我做了一个 foreach() 循环,我从临时文件夹中获取文件并将它们合并到一个新的 PDF 文件中,但是按照我想要的顺序,我想我必须比较文件的名称使用列表中的名称,如果匹配,则转换并添加它,如果不匹配,则传递到下一个文件。
但我不知道该怎么做。
请有人帮我解决这个问题吗? 提前致谢!
我将我的代码发送到:
//the open files button
private void proc2_Click(object sender, EventArgs e)
{
OpenFileDialog dialogo = new OpenFileDialog();
dialogo.Title = "Search files";
dialogo.InitialDirectory = @"E:\";
dialogo.Filter = "Images (.bmp,.jpg,.png,.tiff,.tif) |*.bmp;*.jpg;*.png;*tiff;*tif|All of the files (*.*)|*.*";
DialogResult resposta = dialogo.ShowDialog();
if (resposta == DialogResult.OK)
{
string caminhoCompleto = dialogo.FileName;
caminho2 = dialogo.SafeFileName;
caminhotb2.Text = caminhoCompleto;
string fish = "";
string path = @"C:\temporario";
if(Directory.Exists(path))
{
fish=Path.Combine(path, caminho2);
}
else
{
Directory.CreateDirectory(path);
fish = Path.Combine(path, caminho2);
}
File.Create(fish);
listaimg.Items.Add(caminho2);
}
}
public string[] GetFilesImg4() //jpg files
{
if (!Directory.Exists(@"C:\temporario"))
{
Directory.CreateDirectory(@"C:\temporario");
}
DirectoryInfo dirInfo = new DirectoryInfo(@"C:\temporario");
FileInfo[] fileInfos4 = dirInfo.GetFiles("*.jpg");
foreach (FileInfo info in fileInfos4)
{
if (info.Name.IndexOf("protected") == -1)
list4.Add(info.FullName);
}
return (string[])list4.ToArray(typeof(string));
}
【问题讨论】:
-
提示:更改临时文件夹中的文件名以包含选择的订单号。或者用选定的编号创建一堆临时文件夹。最好的方法是创建一个 List
> ,其中 int 是选择顺序,字符串是所选文件的完整路径名。 -
为什么不只迭代
ListBox中的项目(这将为您提供正确的顺序)? -
为什么顺序很重要?文件的选择和文件列表的获取是在同一个进程中发生还是在不同进程中发生?
-
谢谢大家。订单对我来说很重要,因为我想在我的项目中添加一些东西,这样对用户来说更完整@aiodintsov
-
@Zer0 我无法理解你的评论,你能说得更清楚些吗?
标签: c# arrays .net list converters