////add completion notification to backgroundWorker_RunWorkerCompleted //void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) //{ // //if (Interlocked.Decrement(ref numWorkers) == 0) // //{ // // //update my UI // //} // //new code - notify about completion // _workerCompleted.Set(); //} private void AddImages() { if (_slideInfos.Count() == 0) { return; } var presoFiles = _slideInfos.Select(x => x.path).Distinct(); foreach (string pptxFile in presoFiles) { var pptHeader = Path.GetFileNameWithoutExtension(pptxFile); var underscoreIndex = pptHeader.IndexOf('_'); pptHeader = pptHeader.Remove(0, underscoreIndex + 1); PresentationDocument ppt = null; try { ppt = PresentationDocument.Open(pptxFile, true); } catch (Exception ex) { MessageBox.Show("Powerpoint file needs to be a pptx to extract images."); return; } PresentationPart presentation = ppt.PresentationPart; foreach (var slide in presentation.SlideParts) { foreach (ImagePart image in slide.ImageParts) { string header = slide.Slide.InnerText; if (!string.IsNullOrWhiteSpace(header)) { header = slide.Slide.Descendants <TextBody>().First().InnerText; } if (string.IsNullOrWhiteSpace(header)) { header = pptHeader; } using (var stream = image.GetStream(FileMode.Open, FileAccess.Read)) { var img = Image.FromStream(stream); WordEx.AddImage(img, header, pptHeader); } } } } }
public static void ConvertToDoc(string pdfFilePath, string tempDir) { var pdfHeader = System.IO.Path.GetFileName(pdfFilePath); var underscoreIndex = pdfHeader.IndexOf('_'); pdfHeader = pdfHeader.Remove(0, underscoreIndex + 1); WordEx.AddTitle(pdfHeader); _pdfDoc = new PDDocument(); try { _pdfDoc = PDDocument.load(pdfFilePath); } catch { MessageBox.Show("Cant load pdf, try re-downloading:" + Environment.NewLine + pdfFilePath, "PDF Error"); return; } var pagelist = _pdfDoc.getDocumentCatalog().getAllPages(); for (int x = 0; x < pagelist.size(); x++) { //string pageTxt = GetPageText(x); //PDFPage pdfPage = GetPageHeader(pageTxt); //WordEx.AddHeader(pdfPage.Header); PDPage page = (PDPage)pagelist.get(x); PDResources pdResources = page.getResources(); Map pageImages = pdResources.getImages(); if (pageImages != null) { Iterator imageIter = pageImages.keySet().iterator(); while (imageIter.hasNext()) { String key = (String)imageIter.next(); PDXObjectImage pdxObjectImage = (PDXObjectImage)pageImages.get(key); var buffImage = pdxObjectImage.getRGBImage(); Bitmap theImage = buffImage.getBitmap(); if (!ContainsDocImage(theImage)) { //WordEx.AddImage(theImage, pdfPage.Header, pdfHeader); WordEx.AddImage(theImage, pdfHeader, pdfHeader); } else { theImage.Dispose(); } } } } string docText = _stripper.getText(_pdfDoc); WordEx.AddText(docText); foreach (Bitmap btmap in _docImages) { btmap.Dispose(); } _docImages.Clear(); _pdfDoc.close(); _pdfDoc = null; }