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; }
/// <inheritdoc /> public Face(Blob.Blob blob, uint index = 0) { Handle = Api.hb_face_create(blob.Handle, index); }
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; }