示例#1
0
        public static Blob.Blob MergePdfBlobsToC(List<Blob.Blob> blobsParam, ref Dictionary<string, int> pages)
        {
            blobsParam = blobsParam
                .Where(el => el != null && el.Data != null)
                .ToList();

            //Dictionary of file names (for display purposes) and their page numbers
            //var pages = new Dictionary<string, int>();

            //PDFs start at page 1
            var lastPageNumber = 1;

            //Will hold the final merged PDF bytes
            byte[] mergedBytes;

            //Most everything else below is standard
            using (var ms = new MemoryStream())
            {
                using (var document = new Document())
                {
                    using (var writer = new PdfCopy(document, ms))
                    {
                        document.Open();

                        foreach (var blob in blobsParam)
                        {

                            //Add the current page at the previous page number
                            pages.Add(blob.Name, lastPageNumber);

                            using (var reader = new PdfReader(blob.Data))
                            {
                                writer.AddDocument(reader);

                                //Increment our current page index
                                lastPageNumber += reader.NumberOfPages;
                            }
                        }
                        document.Close();
                    }
                }
                mergedBytes = ms.ToArray();
            }

            //Will hold the final PDF
            //            byte[] finalBytes;
            //            using (var ms = new MemoryStream())
            //            {
            //                using (var reader = new PdfReader(mergedBytes))
            //                {
            //                    using (var stamper = new PdfStamper(reader, ms))
            //                    {
            //
            //                        //The page number to insert our TOC into
            //                        var tocPageNum = reader.NumberOfPages + 1;
            //
            //                        //Arbitrarily pick one page to use as the size of the PDF
            //                        //Additional logic could be added or this could just be set to something like PageSize.LETTER
            //                        var tocPageSize = reader.GetPageSize(1);
            //
            //                        //Arbitrary margin for the page
            //                        var tocMargin = 20;
            //
            //                        //Create our new page
            //                        stamper.InsertPage(tocPageNum, tocPageSize);
            //
            //                        //Create a ColumnText object so that we can use abstractions like Paragraph
            //                        var ct = new ColumnText(stamper.GetOverContent(tocPageNum));
            //
            //                        //Set the working area
            //                        ct.SetSimpleColumn(tocPageSize.GetLeft(tocMargin), tocPageSize.GetBottom(tocMargin),
            //                            tocPageSize.GetRight(tocMargin), tocPageSize.GetTop(tocMargin));
            //
            //                        //Loop through each page
            //                        foreach (var page in pages)
            //                        {
            //                            var link = new Chunk(page.Key);
            //                            var action = PdfAction.GotoLocalPage(page.Value, new PdfDestination(PdfDestination.FIT),
            //                                stamper.Writer);
            //                            link.SetAction(action);
            //                            ct.AddElement(new Paragraph(link));
            //                        }
            //
            //                        ct.Go();
            //                    }
            //                }
            //                finalBytes = ms.ToArray();
            //            }

            var toReturn = new Blob.Blob { Data = mergedBytes/*finalBytes*/ };
            return toReturn;
        }
示例#2
0
 /// <inheritdoc />
 public Face(Blob.Blob blob, uint index = 0)
 {
     Handle = Api.hb_face_create(blob.Handle, index);
 }
示例#3
0
        public static Blob.Blob MergePdfBlobs(List<Blob.Blob> blobsParam, bool isHorizontal)
        {
            var pdfReaders = blobsParam
                .Where(el => el != null && el.Data != null)
                .Select(el => new PdfReader(el.Data))
                .ToList();

            var document = isHorizontal
                ? new Document(PageSize.A4.Rotate(), 0, 0, 0, 0)
                : new Document(PageSize.A4, 0, 0, 0, 0);

            using (var outputStream = new MemoryStream())
            {
                using (var writer = PdfWriter.GetInstance(document, outputStream))
                {
                    document.Open();

                    foreach (var reader in pdfReaders)
                    {
                        for (int i = 1; i <= reader.NumberOfPages; i++)
                        {
                            var page = writer.GetImportedPage(reader, i);
                            document.Add(iTextSharp.text.Image.GetInstance(page));
                        }
                    }
                    document.Close();

                    var toReturn = new Blob.Blob {Data = outputStream.GetBuffer()};
                    return toReturn;
                }
            }
        }
        public virtual IList<Immagine> UploadImages(IEnumerable<HttpPostedFileBase> files, string IDPadre, string TipoPadre, bool fileSingolo)
        {
            IList<Immagine> toReturn = new List<Immagine>();

            foreach (HttpPostedFileBase el in files)
            {
                string extension = Path.GetExtension(el.FileName);

                if (ImageHelper.isValidImageExtension(extension))
                {
                    var imgToSave = new Immagine
                    {
                        FlagPrincipale = fileSingolo,
                        FlagPubblica = fileSingolo,
                        Estensione = extension,
                        IDPadre = IDPadre,
                        TipoPadre = TipoPadre,
                        IDFileImmagine = "no-image"
                    };

                    _repository.SaveOrUpdate(imgToSave);

                    imgToSave.IDFileImmagine = imgToSave.Id;

                    //try
                    //{
                    //    el.SaveAs(imageFileName);
                    //}
                    //catch (Exception exception)
                    //{
                    //    throw;
                    //}
                    var imageData = ResizeBeforeAzureUpload(el, imgToSave);

                    // Blocco per il salvataggio su azure
                    try
                    {
                        //                        using (var ms = new MemoryStream())
                        //                        {
                        //                            el.InputStream.CopyTo(ms);

                        var blob = new Blob.Blob
                        {
                            Name = ImageHelper.BuildFileName(imgToSave),
                            //salva su azure con nome file = ID.estensione
                            MimeType = el.ContentType ?? AttachmentHelper.GetExtensionMimeType(extension),
                            Data = imageData//ms.ToArray(),
                        };

                        _blobManager.Set(blob);
                        //                        }
                    }
                    catch (Exception ex)
                    {
                        throw;
                    }

                    toReturn.Add(imgToSave);
                }
            }

            return toReturn;
        }