Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // sets text content for an object. Depends on object's type the content and/or text formatitng are set differently:
- // - for Address the formatting is applied on line-by-line basis using <LineFonts> list
- // - for text the formatting of current first character is used for the whole text
- // - for Barcode object it is barcode string
- // - for Image it is base64-encoded string of image's png stream
- // - for CircularText it is object's text
- // - for DateTime and Counter object it is object's PreText
- // - for other objects an empty string is returned
- // Parameters:
- // objectName - object name
- // text - plain text string for new object content
- function setObjectText(objectName, text)
- {
- //var objectElem = _getObjectByNameElement(objectName);
- //var objectType = objectElem.tagName;
- var objectElements = _getObjectsByNameElement(objectName);
- for (element in objectElements) {
- var objectType = objectElements[element].tagName;
- switch (objectType)
- {
- case "AddressObject":
- _setAddressObjectText(objectElements[element], text);
- break;
- case "TextObject":
- //get <StyledText>
- var styledTextElem = Xml.getNode(objectElements[element], "StyledText");
- var firstElem = Xml.getNode(styledTextElem, "Element");
- if (firstElem)
- {
- // remove all other children
- Xml.removeAllChildren(styledTextElem);
- // replace string with supplied text
- Xml.setElementText(Xml.getNode(firstElem, "String"), text);
- //readd first elem with updated string
- styledTextElem.appendChild(firstElem);
- }
- else
- {
- // the StyledText is empty - simple add <Element> with default font info
- var defaultElem = '<Element><String>' + text + '</String>\
- <Attributes>\
- <Font Family="Arial" Size="12" Bold="False" Italic="False" Underline="False" Strikeout="False" />\
- <ForeColor Alpha="255" Red="0" Green="0" Blue="0" />\
- </Attributes></Element>';
- var d = Xml.parse(defaultElem);
- styledTextElem.appendChild(d.documentElement.cloneNode(true));
- }
- break;
- case "BarcodeObject":
- Xml.setElementText(Xml.getNode(objectElements[element], "Text"), text);
- break;
- case "ImageObject":
- // if image is embedded return it (base64 png stream)
- var imageElem = Xml.getNode(objectElements[element], "Image", null);
- if (imageElem)
- Xml.setElementText(imageElem, text);
- else
- {
- // if there is no <Image> tag then there should be <ImageLocation>
- // so replace <ImageLocation> with <Image>
- var imageLocationElem = Xml.getNode(objectElements[element], "ImageLocation", null);
- if (!imageLocationElem)
- throw new Error("setObjectText(): <ImageLocation> is expected but not found: " + Xml.serialize(imageElem));
- // create <Image> elem
- imageElem = imageLocationElem.ownerDocument.createElement("Image");
- Xml.setElementText(imageElem, text);
- objectElements[element].replaceChild(imageElem, imageLocationElem);
- }
- break;
- case "CircularTextObject":
- Xml.setElementText(Xml.getNode(objectElements[element], "Text", null), text);
- break;
- case "DateTimeObject":
- Xml.setElementText(Xml.getNode(objectElements[element], "PreText", null), text);
- break;
- case "CounterObject":
- Xml.setElementText(Xml.getNode(objectElements[element], "PreText", null), text);
- break;
- }
- }
- return ""; // default
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement