コード例 #1
0
        public async Task <ActionResult> StampTextsToPDFFromLoad([FromBody] StampSimpleDto stampSimple, [FromServices] StampWatermarkTextBusiness stampWatermarkTextBusiness)
        {
            Debug.WriteLine(stampSimple);
            var newPDF = await stampWatermarkTextBusiness.ManipulatePdfFromURL(stampSimple);

            return(File(newPDF, "application/pdf", stampSimple.FileName));
        }
コード例 #2
0
 public Task <byte[]> ManipulatePdfFromURL(
     StampSimpleDto fileSource)
 {
     using MemoryStream mem = new MemoryStream();
     ConvertToStream(fileSource.URL, mem);
     mem.Seek(0, SeekOrigin.Begin);
     fileSource.ImageSource = mem.ToArray();
     return(ManipulatePdf(fileSource));
 }
コード例 #3
0
        public Task <byte[]> ManipulatePdf(
            StampSimpleDto fileSource)
        {
            using MemoryStream pdfDest   = new MemoryStream();
            using MemoryStream pdfStream = new MemoryStream(fileSource.ImageSource);
            var pdfDoc = new PdfDocument(new PdfReader(pdfStream), new PdfWriter(pdfDest));
            var doc    = new Document(pdfDoc);

            foreach (TextPropertiesDto text in fileSource.Texts)
            {
                //var font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(text.FontName));

                iText.Kernel.Colors.Color fontColor = iText.Kernel.Colors.ColorConstants.CYAN;
                switch (text.Color)
                {
                case "WHITE": fontColor = iText.Kernel.Colors.ColorConstants.WHITE; break;

                case "BLACK": fontColor = iText.Kernel.Colors.ColorConstants.BLACK; break;

                case "BLUE": fontColor = iText.Kernel.Colors.ColorConstants.BLUE; break;

                case "DARKGRAY": fontColor = iText.Kernel.Colors.ColorConstants.DARK_GRAY; break;

                case "GRAY": fontColor = iText.Kernel.Colors.ColorConstants.GRAY; break;

                case "GREEN": fontColor = iText.Kernel.Colors.ColorConstants.GREEN; break;

                case "MAGENTA": fontColor = iText.Kernel.Colors.ColorConstants.MAGENTA; break;

                case "ORANGE": fontColor = iText.Kernel.Colors.ColorConstants.ORANGE; break;

                case "PINK": fontColor = iText.Kernel.Colors.ColorConstants.PINK; break;

                case "RED": fontColor = iText.Kernel.Colors.ColorConstants.RED; break;

                case "YELLOW": fontColor = iText.Kernel.Colors.ColorConstants.YELLOW; break;
                }

                PdfFont fonte = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);
                try
                {
                    fonte = PdfFontFactory.CreateFont(text.FontName);
                }
                catch
                {
                    fonte = PdfFontFactory.CreateFont(StandardFonts.HELVETICA);
                }
                var paragraph = new Paragraph(text.Text).SetFont(fonte).SetFontSize(text.FontSize).SetFontColor(fontColor);

                var gs1 = new PdfExtGState().SetFillOpacity(text.Opacity);

                for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++)
                {
                    PdfPage   pdfPage  = pdfDoc.GetPage(i);
                    Rectangle pageSize = pdfPage.GetPageSize();
                    float     x        = (pageSize.GetLeft() + pageSize.GetRight()) / 2;
                    float     y        = (pageSize.GetTop() + pageSize.GetBottom()) / 2;
                    var       over     = new PdfCanvas(pdfPage);
                    over.SaveState();
                    over.SetExtGState(gs1);

                    doc.ShowTextAligned(paragraph, text.PosX, text.PosY, i, TextAlignment.CENTER, VerticalAlignment.TOP, text.Radio);
                    over.RestoreState();
                }
            }

            doc.Close();

            return(Task.FromResult(pdfDest.ToArray()));
        }