【发布时间】:2020-06-01 10:46:28
【问题描述】:
我想将从 PDF 转换为 PNG 的文件保存在 zip 文件中。到目前为止,我能够将单个 PDF 文档转换为 PNG 格式,但是如果 PDF 有多个页面,我的应用程序只会转换并单独保存它们(一次一个),我必须在其中重复单击保存按钮之前保存 PDF 的下一页等。
我使用 Syncfusion 进行文档转换,使用 DotNetZip 压缩文件。 这是我的代码:
//Loaded PDF file
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(TxtBox_FileName.Text);
//ExportAsImage method returns specified page in the PDF document as Bitmap image
Bitmap[] images = loadedDocument.ExportAsImage(0, loadedDocument.Pages.Count - 1);
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_FileName.Text;
if (_saveFile.ShowDialog() == DialogResult.OK)
{
imageToConvert.Save(_saveFile.FileName, ImageFormat.Png);
loadedDocument.Close(true);
imageToConvert.Dispose();
}
}
else
{
//Save converted images if PDF is multi-page
Image imageToConvert2 = images[i];
SaveFileDialog _saveFile = new SaveFileDialog();
_saveFile.Title = "Save file";
_saveFile.Filter = "PNG|*.png";
_saveFile.FileName = Lbl_FileName.Text;
if (_saveFile.ShowDialog() == DialogResult.OK)
{
imageToConvert2.Save(_saveFile.FileName, ImageFormat.Png);
//Create a zip file for all the images
string fileName = TxtBox_FileName.Text;
Thread thread = new Thread(t =>
{
using (ZipFile zip = new ZipFile())
{
FileInfo fileInfo = new FileInfo(fileName);
zip.AddFile(fileName);
DirectoryInfo di = new DirectoryInfo(fileName);
zip.Save(string.Format("{0}/{1}.zip", di.Parent.FullName, fileInfo.Name));
}
})
{ IsBackground = true };
thread.Start();
}
loadedDocument.Close(true);
imageToConvert2.Dispose();
}
}
非常感谢您的帮助!
【问题讨论】:
-
你上面的代码有什么问题?
-
我无法从多页 PDF 文档中压缩转换后的图像文件。
标签: winforms c#-2.0 syncfusion dotnetzip pdf-conversion