Пример #1
0
        ////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);
                        }
                    }
                }
            }
        }
Пример #2
0
        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;
        }