Advertisement
Guest User

setObjectText

a guest
Sep 16th, 2015
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // sets text content for an object. Depends on object's type the content and/or text formatitng are set differently:
  2.         //  - for Address the formatting is applied on line-by-line basis using <LineFonts> list
  3.         //  - for text the formatting of current first character is used for the whole text
  4.         //  - for Barcode object it is barcode string
  5.         //  - for Image it is base64-encoded string of image's png stream
  6.         //  - for CircularText it is object's text
  7.         //  - for DateTime and Counter object it is object's PreText
  8.         //  - for other objects an empty string is returned
  9.         // Parameters:
  10.         //      objectName - object name
  11.         //      text - plain text string for new object content
  12.         function setObjectText(objectName, text)
  13.         {
  14.             //var objectElem = _getObjectByNameElement(objectName);
  15.             //var objectType = objectElem.tagName;
  16.  
  17.             var objectElements = _getObjectsByNameElement(objectName);
  18.  
  19.             for (element in objectElements) {
  20.                 var objectType = objectElements[element].tagName;
  21.  
  22.                 switch (objectType)
  23.                 {
  24.                     case "AddressObject":
  25.                         _setAddressObjectText(objectElements[element], text);
  26.                         break;
  27.  
  28.                     case "TextObject":
  29.                         //get <StyledText>
  30.                         var styledTextElem = Xml.getNode(objectElements[element], "StyledText");
  31.                         var firstElem = Xml.getNode(styledTextElem, "Element");
  32.                         if (firstElem)
  33.                         {
  34.                             // remove all other children
  35.                             Xml.removeAllChildren(styledTextElem);
  36.  
  37.                             // replace string with supplied text
  38.                             Xml.setElementText(Xml.getNode(firstElem, "String"), text);
  39.  
  40.                             //readd first elem with updated string
  41.                             styledTextElem.appendChild(firstElem);
  42.                         }
  43.                         else
  44.                         {
  45.                             // the StyledText is empty - simple add <Element> with default font info
  46.                             var defaultElem = '<Element><String>' + text + '</String>\
  47.                        <Attributes>\
  48.                            <Font Family="Arial" Size="12" Bold="False" Italic="False" Underline="False" Strikeout="False" />\
  49.                            <ForeColor Alpha="255" Red="0" Green="0" Blue="0" />\
  50.                        </Attributes></Element>';
  51.  
  52.                             var d = Xml.parse(defaultElem);
  53.                             styledTextElem.appendChild(d.documentElement.cloneNode(true));
  54.                         }
  55.                         break;
  56.  
  57.                     case "BarcodeObject":
  58.                         Xml.setElementText(Xml.getNode(objectElements[element], "Text"), text);
  59.                         break;
  60.  
  61.                     case "ImageObject":
  62.                         // if image is embedded return it (base64 png stream)
  63.                         var imageElem = Xml.getNode(objectElements[element], "Image", null);
  64.                         if (imageElem)
  65.                             Xml.setElementText(imageElem, text);
  66.                         else
  67.                         {
  68.                             // if there is no <Image> tag then there should be <ImageLocation>
  69.                             // so replace <ImageLocation> with <Image>
  70.                             var imageLocationElem = Xml.getNode(objectElements[element], "ImageLocation", null);
  71.                             if (!imageLocationElem)
  72.                                 throw new Error("setObjectText(): <ImageLocation> is expected but not found: " + Xml.serialize(imageElem));
  73.  
  74.                             // create <Image> elem
  75.                             imageElem = imageLocationElem.ownerDocument.createElement("Image");
  76.                             Xml.setElementText(imageElem, text);
  77.                             objectElements[element].replaceChild(imageElem, imageLocationElem);
  78.                         }
  79.                         break;
  80.  
  81.                     case "CircularTextObject":
  82.                         Xml.setElementText(Xml.getNode(objectElements[element], "Text", null), text);
  83.                         break;
  84.  
  85.                     case "DateTimeObject":
  86.                         Xml.setElementText(Xml.getNode(objectElements[element], "PreText", null), text);
  87.                         break;
  88.  
  89.                     case "CounterObject":
  90.                         Xml.setElementText(Xml.getNode(objectElements[element], "PreText", null), text);
  91.                         break;
  92.                 }
  93.             }
  94.            
  95.             return ""; // default
  96.         };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement