为从 PDF 转换为 PNG 的图像创建 zip 文件

Posted

技术标签:

【中文标题】为从 PDF 转换为 PNG 的图像创建 zip 文件【英文标题】:Create a zip file for images converted from PDF to PNG 【发布时间】: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 文档中压缩转换后的图像文件。 【参考方案1】:

进一步分析,我们可以使用“System.IO.Compression命名空间中可用的ZipFilehttps://docs.microsoft.com/en-us/dotnet/api/system.io.compression.zipfile?view=netcore-3.1实例的CreateFromDirectory方法”来实现将PNG图像(使用ExportAsImage方法生成)保存到zip文件的要求。使用 CreateFromDirectory 方法请在下方找到代码 sn-p,

string resultPath = @"../../Result.zip";

// Save all images in a zip file.
ZipFile.CreateFromDirectory(@"../../Output", resultPath);

我们已经修改了您的代码 sn-p 并创建了相同的示例,可以从下面的链接下载,

https://www.syncfusion.com/downloads/support/directtrac/general/ze/ExportImageZip1514521637

问候, Uthandadraja S(我为 Syncfusion 工作)

【讨论】:

以上是关于为从 PDF 转换为 PNG 的图像创建 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章

imagemagick 将 RGB PNG 转换为 CMYK PDF

在python中将png图像转换为一个pdf

我需要检测扫描图像中 QR 码的大致位置(PDF 转换为 PNG)

使用 ImageMagick 将 PNG 文件转换为 PDF 时出现粗糙的边缘

在Google云端存储上将PDF转换为PNG

将 PDF 转换为 PNG