{"id":31,"date":"2008-10-20T22:23:00","date_gmt":"2008-10-21T03:23:00","guid":{"rendered":"http:\/\/lukerymarz.com\/alearningexperience\/2008\/10\/adobe-xfdf.html"},"modified":"2008-10-20T22:23:00","modified_gmt":"2008-10-21T03:23:00","slug":"adobe-xfdf","status":"publish","type":"post","link":"http:\/\/lukerymarz.com\/alearningexperience\/2008\/10\/adobe-xfdf.html","title":{"rendered":"Adobe XFDF"},"content":{"rendered":"<p><span class=\"Apple-style-span\"  style=\" ;font-family:'Times New Roman';\"><\/p>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">Adobe Xml Forms Data Format is an xml format that allows you to fill PDF forms. \u00a0I used this in my D&amp;D character generator to allow for easy creation of a printable character sheet in PDF form.<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">I started with an editable PDF form. \u00a0Each field in an editable form has a name of some sort, and if you have access to Adobe LiveCycle Designer, you can view the fields as XML. \u00a0All you have to do is open the editable PDF in LiveCycle Designer and click View-&gt;XML Source. \u00a0This will give you a long XML list detailing all the fields in your form.<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">UPDATE 2008-11-13: <span class=\"Apple-style-span\" style=\"font-style: italic;\">I got an email from someone recently who was creating his editable form using LiveCycle Designer. \u00a0It turns out that if you use LiveCycle Designer to build your form, it won&#8217;t work with XFDF. \u00a0If you want to use XFDF, you have to create the form using Acrobat. \u00a0LiveCycle Designer forms require that you use XDP (which I have never used). \u00a0You can read a bit more about the incompatibilities\u00a0<\/span><a href=\"http:\/\/www.michaelnolan.co.uk\/2007\/03\/22\/pdf-forms-with-acrobat-8\/\"><span class=\"Apple-style-span\" style=\"font-style: italic;\">here<\/span><\/a><span class=\"Apple-style-span\" style=\"font-style: italic;\">.<\/span><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">To specify the values to go into an editable PDF, you create an XFDF file. \u00a0The basic format is this:<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;xfdf xmlns=&#8221;http:\/\/ns.adobe.com\/xfdf\/&#8221; xml:space=&#8221;preserve&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;f href=&#8221;http:\/\/www.lukerymarz.com\/files\/CharacterSheet.pdf&#8221;\/&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;fields&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;name&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;null&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;level&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;1&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;class&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;Warlock&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;race&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;Tiefling&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 &#8230;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 &#8230;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 &#8230;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;\/fields&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">&lt;\/xfdf&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">You put this in a text file with an xfdf extension and when you open it, it will reference the pdf in the &lt;f&gt; field and fill in the specified fields. \u00a0<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">So how do you get from the XML LiveCycle Designer gives you to the actual xfdf data. \u00a0Well, I didn&#8217;t want to type a bunch of repetitive lines for each field in the form, so I wrote a little tool to take the LiveCycle xml and spit out ActionScript. \u00a0My tool opens the LiveCycle XML, parses each field, and provides a listing with the field type. \u00a0It then converts each field to ActionScript code that will append to a string in a my output function. \u00a0All I did then was copy the ActionScript code, fill in the specific piece of data for each field (for example, currentCharacter.name for the &#8220;name&#8221; field), and the output was done. \u00a0<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">There are two caveats I ran into, and the first has to do with spaces. \u00a0For each field, the name of that field in the LiveCycle XML has an underscore where a space is. \u00a0In the XFDF XML you generate, those underscores need to be replaced with an actual space, otherwise your field won&#8217;t get filled in. \u00a0<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">The second caveat has to do with arrays. \u00a0For example, a part of the ActionScript code my tool generated looks like this:<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.0&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.1&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.2&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.3&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.4&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.5&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">xfdf += &#8216;&lt;field name=&#8221;class_feature.6&#8243;&gt;&lt;value&gt;&#8217; + Database.Data.currentCharacter. + &#8216;&lt;\/value&gt;&lt;\/field&gt;&#8217;;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">This is an array of class features. \u00a0You&#8217;d think you could just go through the list, creating:<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;class feature.0&#8243;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;sample feature 1&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;class feature.1&#8243;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;value&gt;sample feature 2&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">But that is incorrect. \u00a0Since this is an array, you have to represent it as one in the xfdf. \u00a0The actual output would look like this:<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;field name=&#8221;class feature&#8221;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;field name=&#8221;0&#8243;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0 \u00a0&lt;value&gt;Eldritch Blast:&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;field name=&#8221;1&#8243;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0 \u00a0&lt;value&gt;Edlritch Pact: Choose Fey Pact, Infernal Pact, or Star Pact.&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;field name=&#8221;2&#8243;&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0 \u00a0&lt;value&gt;Prime Shot: If you are closest to your target, +1 to attack rolls&lt;\/value&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0 \u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">\u00a0\u00a0&lt;\/field&gt;<\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \"><\/div>\n<div style=\"border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%\/normal Georgia, serif; text-align: left; \">And that&#8217;s it. \u00a0If you reference a pdf on a website, you can send only the xfdf to your user, and as long as they have access to your website, when they open the xfdf, Adobe will take care of the rest. \u00a0Pretty neat, once you get past the catches.<\/div>\n<\/div>\n<p><\/span><\/p>\n<div>\n<blockquote>\n<div><\/div>\n<\/blockquote>\n<div><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Adobe Xml Forms Data Format is an xml format that allows you to fill PDF forms. \u00a0I used this in my D&amp;D character generator to allow for easy creation of a printable character sheet in PDF form. I started with an editable PDF form. \u00a0Each field in an editable form has a name of some [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-31","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/posts\/31","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/comments?post=31"}],"version-history":[{"count":0,"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/posts\/31\/revisions"}],"wp:attachment":[{"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/media?parent=31"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/categories?post=31"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lukerymarz.com\/alearningexperience\/wp-json\/wp\/v2\/tags?post=31"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}