Пример #1
0
        /// <summary>
        /// Convert pdf to html with picture files
        /// </summary>
        /// <param name="inputFileName">Absolute name of input file</param>
        /// <param name="outputFolder">Folder for saving results</param>
        /// <param name="newFileName">Relative filename of new html</param>
        public static void ConvertToHtml(string inputFileName, string outputFolder, string newFileName, Dictionary <string, string> parameters)
        {
            if (!Directory.Exists(outputFolder))
            {
                Directory.CreateDirectory(outputFolder);
            }
            Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument(inputFileName);
            using (var stream = new MemoryStream())
            {
                pdf.SaveToStream(stream, Spire.Pdf.FileFormat.HTML);
                string result = System.Text.Encoding.UTF8.GetString(stream.ToArray());
                if (result.IndexOf(replaceValuePdf) >= 0)
                {
                    result = result.Replace(replaceValuePdf, "");
                }
                else if (result.IndexOf(replaceValueWithoutTag) >= 0)
                {
                    result = result.Replace(replaceValueWithoutTag, "");
                }
                else if (result.IndexOf(replaceValue) >= 0)
                {
                    result = result.Replace(replaceValue, "");
                }
                result = ExtractImages(outputFolder, result);

                File.WriteAllText(outputFolder + "/" + newFileName, result, Encoding.UTF8);
                result = null;
            }
            pdf.Dispose();
        }
Пример #2
0
        //public static void ToTIFF(List<string> imagesPath,string folderName)
        //{
        //    System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.SaveFlag;
        //    EncoderParameters ep = new EncoderParameters(1);
        //    ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);



        //    Bitmap pages = null;

        //    File.MemoryStream ms = new MemoryStream(File.ReadAllBytes());
        //    pages = (Bitmap)Image.FromStream(ms);

        //    int frame = 0;

        //    foreach (var item in imagesPath)
        //    {

        //        MemoryStream mss = new MemoryStream(File.ReadAllBytes(item));
        //        Bitmap bm = (Bitmap)Image.FromStream(mss);
        //        int frameCount = bm.GetFrameCount(FrameDimension.Page);
        //        for (int i = 0; i < frameCount; i++)
        //        {
        //            bm.SelectActiveFrame(FrameDimension.Page, i);
        //            pages.SaveAdd(bm, ep);
        //        }
        //    }

        //    pages.Save(@"C:\1\TiffFile.tif");



        //}

        //public static class TiffHelper
        //{
        //    /// <summary>
        //    /// Merges multiple TIFF files (including multipage TIFFs) into a single multipage TIFF file.
        //    /// </summary>
        //    public static byte[] MergeTiff(params byte[][] tiffFiles)
        //    {
        //        byte[] tiffMerge = null;
        //        using (var msMerge = new MemoryStream())
        //        {
        //            //get the codec for tiff files
        //            ImageCodecInfo ici = null;
        //            foreach (ImageCodecInfo i in ImageCodecInfo.GetImageEncoders())
        //                if (i.MimeType == "image/tiff")
        //                    ici = i;

        //            System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.SaveFlag;
        //            EncoderParameters ep = new EncoderParameters(1);

        //            Bitmap pages = null;
        //            int frame = 0;

        //            foreach (var tiffFile in tiffFiles)
        //            {
        //                using (var imageStream = new MemoryStream(tiffFile))
        //                {
        //                    using (Image tiffImage = Image.FromStream(imageStream))
        //                    {
        //                        foreach (Guid guid in tiffImage.FrameDimensionsList)
        //                        {
        //                            //create the frame dimension
        //                            FrameDimension dimension = new FrameDimension(guid);
        //                            //Gets the total number of frames in the .tiff file
        //                            int noOfPages = tiffImage.GetFrameCount(dimension);

        //                            for (int index = 0; index < noOfPages; index++)
        //                            {
        //                                FrameDimension currentFrame = new FrameDimension(guid);
        //                                tiffImage.SelectActiveFrame(currentFrame, index);
        //                                using (MemoryStream tempImg = new MemoryStream())
        //                                {
        //                                    tiffImage.Save(tempImg, ImageFormat.Tiff);
        //                                    {
        //                                        if (frame == 0)
        //                                        {
        //                                            //save the first frame
        //                                            pages = (Bitmap)Image.FromStream(tempImg);
        //                                            ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.MultiFrame);
        //                                            pages.Save(msMerge, ici, ep);
        //                                        }
        //                                        else
        //                                        {
        //                                            //save the intermediate frames
        //                                            ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.FrameDimensionPage);
        //                                            pages.SaveAdd((Bitmap)Image.FromStream(tempImg), ep);
        //                                        }
        //                                    }
        //                                    frame++;
        //                                }
        //                            }
        //                        }
        //                    }
        //                }
        //            }
        //            if (frame > 0)
        //            {
        //                //flush and close.
        //                ep.Param[0] = new EncoderParameter(enc, (long)EncoderValue.Flush);
        //                pages.SaveAdd(ep);
        //            }

        //            msMerge.Position = 0;
        //            tiffMerge = msMerge.ToArray();
        //        }
        //        return tiffMerge;
        //    }
        //}

        public static MemoryStream ToPDF(List <byte[]> input)
        {
            try
            {
                MemoryStream memoryStream = new MemoryStream();

                using (Spire.Pdf.PdfDocument document = new Spire.Pdf.PdfDocument())
                {
                    foreach (byte[] element in input)
                    {
                        MemoryStream imageMemoryStream = new MemoryStream(element);

                        Spire.Pdf.PdfPageBase page = document.Pages.Add();

                        Spire.Pdf.Graphics.PdfImage image = Spire.Pdf.Graphics.PdfImage.FromStream(imageMemoryStream);
                        //page.PageInfo.Margin.Bottom = 0;
                        //page.PageInfo.Margin.Top = 0;
                        //page.PageInfo.Margin.Left = 0;
                        //page.PageInfo.Margin.Right = 0;
                        //page.PageInfo.IsLandscape = false;

                        float widthFitRate  = image.PhysicalDimension.Width / page.Canvas.ClientSize.Width;
                        float heightFitRate = image.PhysicalDimension.Height / page.Canvas.ClientSize.Height;
                        float fitRate       = Math.Max(widthFitRate, heightFitRate);
                        float fitWidth      = image.PhysicalDimension.Width / fitRate;
                        float fitHeight     = image.PhysicalDimension.Height / fitRate;

                        page.Canvas.DrawImage(image, 0, 0, fitWidth, fitHeight);
                    }

                    //document.PDFStandard.CompressionLevel(new Document.ConvertOptions()
                    //{
                    //    LinkDuplcateStreams = true,
                    //    RemoveUnusedObjects = true,
                    //    RemoveUnusedStreams = true,
                    //    CompressImages = true //IMP
                    //});

                    document.SaveToStream(memoryStream);
                }

                return(memoryStream);
            }
            catch
            {
                throw;
            }
        }