c# - C# 使用 SaveFileDialog 或 FolderBrowserDialog 保存图像文件
问题描述
我正在尝试保存从 PDF 转换为 PNG 的图像文件。如果 PDF 是使用“SaveFileDialog”的单页文档,我希望我的应用程序保存转换后的图像,如果 PDF 文件是多页文档,我希望我的应用程序使用“FolderBrowserDialog”将它们保存到文件夹中”。
我的问题是,如果 PDF 文件是多页文档,我的代码将首先使用“SaveFileDialog”保存第一个图像(转换后),然后再尝试使用“FolderBrowserDialog”保存其余图像。
这是我尝试过的。
Image = imageToConvert = null;
for (int i = 0; i < images.Length; i++)
{
if (i == 0)
{
//Save converted image if PDF is single page
imageToConvert = images[i];
SaveFileDialog _saveFile = new SaveFileDialog();
_saveFile.Title = "Save file";
_saveFile.Filter = "PNG|*.png";
_saveFile.FileName = Lbl_OriginalFileName.Text;
if (_saveFile.ShowDialog() == DialogResult.OK)
{
imageToConvert.Save(_saveFile.FileName, ImageFormat.Png);
imageToConvert.Dispose();
}
else if (_saveFile.ShowDialog() == DialogResult.Cancel)
{
return;
}
}
else
{
if (i > 0)
{
// Save converted Images if PDF is multi-page
Image imageToConvert2 = images[i];
FolderBrowserDialog fbd = new FolderBrowserDialog();
fbd.ShowDialog();
fbd.Description = "Select the folder you want save your files into.";
string pathString = Path.Combine(fbd.SelectedPath, subFolder);
Directory.CreateDirectory(pathString);
if (fbd.ShowDialog() == DialogResult.Cancel)
{
return;
}
string saveFileNamesPNG = string.Format(Lbl_OriginalFileName.Text + "_" + i.ToString() + ".png", ImageFormat.Png);
imageToConvert.Save(Path.Combine(pathString, saveFileNamesPNG));
imageToConvert.Dispose();
}
}
}
我真的很感激任何帮助。
解决方案
我将测试移到循环之外,然后检查它是否是一页并使用 SaveFileDialog。如果有多个,然后我使用带有 For 循环的 FolderBrowserDialog 来保存图像。
推荐阅读
- makefile - make 无法读取自己写入的文件
- laravel - 多个 findForPassport ?例如使用用户名和电话号码登录
- python - 获取未排序的特征值的问题
- json - 根据响应 JSON 检查用户输入的详细信息
- visual-studio-code - 将 Web 应用程序从 Visual Studio Code 部署到 Azure,但省略了数据文件夹
- bash - 我想在 bash(cmder)中找不到命令时调用我的脚本?
- blogger - 如何在博客中创建带有菜单和搜索框的标题?
- r - 不加引号的字符
- python - 如何绘制 x = A 列,但颜色/色调 = B 列分类变量
- php - str_replace 函数无法替换多个值