上代码:
1 #region PDF转换实现 2 protected void batchGD(string url,string fileName) 3 { 4 var webroot = System.Configuration.ConfigurationManager.AppSettings["WebRoot"]; 5 6 url = webroot + url; 7 Thread thread = new Thread(delegate() 8 { 9 using (WebBrowser browser = new WebBrowser()) 10 { 11 browser.Tag = fileName; 12 browser.ScrollBarsEnabled = false; 13 browser.AllowNavigation = true; 14 browser.ScriptErrorsSuppressed = true; 15 browser.Navigate(url); 16 browser.Width = 1024; 17 browser.Height = 768; 18 browser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocumentCompleted); 19 while (browser.ReadyState != WebBrowserReadyState.Complete) 20 { 21 System.Windows.Forms.Application.DoEvents(); 22 } 23 } 24 }); 25 thread.SetApartmentState(ApartmentState.STA); 26 thread.Start(); 27 thread.Join(); 28 29 30 31 32 } 33 private void DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 34 { 35 WebBrowser m_WebBrowser = sender as WebBrowser; 36 var name = m_WebBrowser.Tag; 37 var FileName = StorePath + name + ".pdf"; 38 39 Bitmap m_Bitmap = new Bitmap(this.m_BrowserWidth, m_WebBrowser.Document.Body.ScrollRectangle.Height); 40 m_WebBrowser.Width = this.m_BrowserWidth; 41 m_WebBrowser.Height = m_WebBrowser.Document.Body.ScrollRectangle.Height; 42 m_WebBrowser.BringToFront(); 43 Rectangle rectangle = new Rectangle(0, 0, this.m_BrowserWidth, m_WebBrowser.Document.Body.ScrollRectangle.Height); 44 m_WebBrowser.DrawToBitmap(m_Bitmap, rectangle); 45 m_Bitmap = (Bitmap)m_Bitmap.GetThumbnailImage(this.m_BrowserWidth, m_WebBrowser.Document.Body.ScrollRectangle.Height, null, IntPtr.Zero); 46 47 using (MemoryStream stream = new MemoryStream()) 48 { 49 m_Bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png); 50 byte[] bytes = stream.ToArray(); 51 iTextSharp.text.Image im = iTextSharp.text.Image.GetInstance(bytes); 52 iTextSharp.text.Rectangle rec = new iTextSharp.text.Rectangle(im.Width, im.Height); 53 iTextSharp.text.Document doc = new iTextSharp.text.Document(rec, 0, 0, 0, 0); 54 iTextSharp.text.pdf.PdfWriter.GetInstance(doc, new System.IO.FileStream(FileName, System.IO.FileMode.Create)); 55 doc.Open(); 56 57 doc.Add(im); 58 doc.Close(); 59 doc.Dispose(); 60 } 61 m_Bitmap.Dispose(); 62 63 } 64 #endregion
#region ZIP打包实现 public void ZipForDown(string outPathname, string folderName) { FileStream fsOut = File.Create(outPathname); ZipOutputStream zipStream = new ZipOutputStream(fsOut); zipStream.SetLevel(6); //0-9, 9 being the highest level of compression int folderOffset = folderName.Length + (folderName.EndsWith("\\") ? 0 : 1); CompressFolder(folderName, zipStream, folderOffset); zipStream.IsStreamOwner = true; // Makes the Close also Close the underlying stream zipStream.Close(); } private void CompressFolder(string path, ZipOutputStream zipStream, int folderOffset) { string[] files = Directory.GetFiles(path); foreach (string filename in files) { FileInfo fi = new FileInfo(filename); string entryName = filename.Substring(folderOffset); // Makes the name in zip based on the folder entryName = ZipEntry.CleanName(entryName); // Removes drive from name and fixes slash direction ZipEntry newEntry = new ZipEntry(entryName); newEntry.DateTime = fi.LastWriteTime; // Note the zip format stores 2 second granularity newEntry.Size = fi.Length; zipStream.PutNextEntry(newEntry); byte[] buffer = new byte[4096]; using (FileStream streamReader = File.OpenRead(filename)) { StreamUtils.Copy(streamReader, zipStream, buffer); } zipStream.CloseEntry(); } string[] folders = Directory.GetDirectories(path); foreach (string folder in folders) { CompressFolder(folder, zipStream, folderOffset); } } #endregion