/// <summary> /// Appliva il watermark su di un documento /// </summary> /// <param name="Doc"></param> /// <param name="watermark"></param> /// <returns></returns> public byte[] EtichettaWatermark(byte[] Doc, string watermark) { // add Head+Foot PdfLabeler ePdf = new PdfLabeler(); // parse label // <Watermark> // <Text>Protocollo 123 (pagina) di (pagine)</Text> // <Font Face="Arial" Size="18" Style="Bold,Italic" /> // <Point WatermarkRotation="90" FillOpacity="3"/> // </Watermark> XmlDocument document = new XmlDocument(); NameTable nt = new NameTable(); XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt); XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None); XmlTextReader reader = new XmlTextReader(watermark, XmlNodeType.Element, context); document.Load(reader); string watermarkLabel = string.Empty; XmlNode root = document.SelectSingleNode("Watermark"); if (root != null) { XmlNode textNode = root.SelectSingleNode("Text"); watermarkLabel = textNode.InnerText.ToString(); ReadBaseConfig(ePdf, root); XmlNode point = root.SelectSingleNode("WatermarkConfig"); if (point != null) { if (point.Attributes["WatermarkRotation"] != null) { ePdf.watermarkRotation = int.Parse(point.Attributes["WatermarkRotation"].InnerText); } if (point.Attributes["FillOpacity"] != null) { ePdf.fillOpacity = float.Parse(point.Attributes["FillOpacity"].InnerText) / 100; } } else { ePdf.useStartPoint = false; } } return(ePdf.Watermark(Doc, watermarkLabel)); }
/// <summary> /// Lettura della configurazione XML base /// </summary> /// <param name="ePdf"></param> /// <param name="root"></param> private static void ReadBaseConfig(PdfLabeler ePdf, XmlNode root) { XmlNode font = root.SelectSingleNode("Font"); if (font != null) { FontStyle fs = new FontStyle(); ePdf.FontStyle = font.Attributes["Style"].InnerText; if (font.Attributes["Style"].InnerText.ToString().IndexOf("Bold") >= 0) { fs |= FontStyle.Bold; } if (font.Attributes["Style"].InnerText.ToString().IndexOf("Italic") >= 0) { fs |= FontStyle.Italic; } ePdf.font = new System.Drawing.Font(font.Attributes["Face"].InnerText.ToString(), int.Parse(font.Attributes["Size"].InnerText), fs); ePdf.FontFace = font.Attributes["Face"].InnerText.ToString(); int r, g, b; if (font.Attributes["Color"] != null && !string.IsNullOrEmpty(font.Attributes["Color"].InnerText)) { string[] rgb = font.Attributes["Color"].InnerText.Split(','); if (rgb.Length >= 3) { bool parseOk = true; if (!int.TryParse(rgb[0], out r)) { parseOk = false; } if (!int.TryParse(rgb[1], out g)) { parseOk = false; } if (!int.TryParse(rgb[2], out b)) { parseOk = false; } if (parseOk) { ePdf.Color = new iTextSharp.text.BaseColor(r, g, b); } } } } XmlNode scale = root.SelectSingleNode("Scale"); if (scale != null) { int scalePercent = 0; if (int.TryParse(scale.Attributes["scalePercent"].InnerText, out scalePercent)) { ePdf.scalePercent = scalePercent * 0.01f; } } }
private byte[] AddLabelToConvertedDocument(string ext, string label, byte[] WmfSigns, byte[] res, byte[] doc) { logger.DebugFormat("AddLabelToConvertedDocument {0}", ext); bool deleteFile = ConfigurationHelper.GetValueOrDefault <bool>("DeleteFile", false); // add Head+Foot PdfLabeler ePdf = new PdfLabeler(); // parse label // <Label> // <Text>Protocollo 123 (pagina) di (pagine)</Text><Footer>Protocollo 123 (pagina) di (pagine)</Footer> // <Font Face="Arial" Size="18" Style="Bold,Italic" /> // </Label> XmlDocument document = new XmlDocument(); NameTable nt = new NameTable(); XmlNamespaceManager nsmgr = new XmlNamespaceManager(nt); XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None); XmlTextReader reader = new XmlTextReader(label, XmlNodeType.Element, context); document.Load(reader); string labtext = string.Empty; string footext = string.Empty; XmlNode root = document.SelectSingleNode("Label"); if (root != null) { XmlNode text = root.SelectSingleNode("Text"); labtext = text.InnerText; footext = string.Empty; text = root.SelectSingleNode("Footer"); if (text != null) { footext = text.InnerText; } ReadBaseConfig(ePdf, root); } ePdf.testoEtichetta = labtext; ePdf.testoFooter = footext; ePdf.coverWMF = (WmfSigns == null) ? new byte[0] : WmfSigns; string inFile = Path.Combine(Path.GetTempPath(), "SC_" + Guid.NewGuid() + ".tmp"); try { if (!deleteFile) { logger.Debug("Source file name: " + inFile); } File.WriteAllBytes(inFile, res); var resized = ePdf.AddSignatureToPageAndResizeNew(File.ReadAllBytes(inFile), doc); var labeled = ePdf.AddLabelToPagesNew(resized); return(labeled); } catch (Exception ex) { logger.Error(ex); throw; } finally { try { if (deleteFile) { File.Delete(inFile); } else { logger.InfoFormat("End Process, del file:{0} - {1} ", inFile, label); } } catch (Exception ex) { logger.Error(ex); throw; } } }