...
Code Block | ||
---|---|---|
| ||
;Adobe Acrobat (v9.3.0 Pro Extended) ;document ;doc, html, jpg, pdf, ps, rtf, txt ;Parse output format arg1 = %1% StringGetPos, index, arg1, ., R ifLess, index, 0, ExitApp index += 2 out := SubStr(arg1, index) ;Parse filename root StringGetPos, index, arg1, \, R ifLess, index, 0, ExitApp index += 2 name := SubStr(arg1, index) StringGetPos, index, name, ., R ifLess, index, 0, ExitApp name := SubStr(name, 1, index) ;Activate the window WinActivate, %name%.pdf - Adobe Acrobat Pro Extended WinWaitActive, %name%.pdf - Adobe Acrobat Pro Extended ;Save document Send, ^S WinWait, Save As if(out = "doc"){ ControlSend, ComboBox3, m }else if(out = "html"){ controlSend, ComboBox3, h }else if(out = "jpg"){ controlSend, ComboBox3, j }else if(out = "pdf"){ controlSend, ComboBox3, a }else if(out = "ps"){ controlSend, ComboBox3, p controlSend, ComboBox3, p controlSend, ComboBox3, p controlSend, ComboBox3, p controlSend, ComboBox3, p }else if(out = "rtf"){ controlSend, ComboBox3, r }else if(out = "txt"){ controlSend, ComboBox3, t controlSend, ComboBox3, t } ControlSetText, Edit1, %1% ControlSend, Edit1, {Enter} ;Return to main window before exiting Loop { ;Continue on if main window is active IfWinActive, %name%.pdf - Adobe Acrobat Pro Extended { break } ;Click "Yes" if asked to overwrite files IfWinExist, Save As { ControlGetText, tmp, Button1, Save As if(tmp = "&Yes") { ControlClick, Button1, Save As } } Sleep, 500 } ;Wait a lit bit more just in case Sleep, 1000 ;Close whatever document is currently open Send, ^w ;Make sure it actually closed before exiting Loop { ;Continue on if main window is active IfWinActive, Adobe Acrobat Pro Extended { break } Sleep, 500 } |
DFDL Schemas
The Data Format Description Language (DFDL) allows one to write an XML schema definition which defines how to automatically parse a file in that format into an XML representation of the data. DFDL provides an ideal means of preserving the many ad hoc formats created and used in labs. The DFDL schema below is a simple example that parses the data from a PGM image file.
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?>
<!--
Load image data from a PGM file and represent the data as a sequence of pixels in row major order.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:ex="http://example.com" targetNamespace="http://example.com">
<xs:include schemaLocation="xsd/built-in-formats.xsd"/>
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format ref="ex:daffodilTest1" separator="" initiator="" terminator="" leadingSkip='0' textTrimKind="none" initiatedContent="no"
alignment="implicit" alignmentUnits="bits" trailingSkip="0" ignoreCase="no" separatorPolicy="suppressed"
separatorPosition="infix" occursCountKind="parsed" emptyValueDelimiterPolicy="both" representation="text"
textNumberRep="standard" lengthKind="delimited" encoding="ASCII"/>
</xs:appinfo>
</xs:annotation>
<xs:element name="file">
<xs:complexType>
<xs:sequence>
<xs:element name="header" dfdl:lengthKind="implicit" maxOccurs="1">
<xs:complexType>
<xs:sequence dfdl:sequenceKind="ordered" dfdl:separator="%NL;" dfdl:separatorPosition="postfix">
<xs:element name="type" type="xs:string"/>
<xs:element name="dimensions" maxOccurs="1" dfdl:occursCountKind="implicit">
<xs:complexType>
<xs:sequence dfdl:sequenceKind="ordered" dfdl:separator="%SP;">
<xs:element name="width" type="xs:integer"/>
<xs:element name="height" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="depth" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pixels" dfdl:lengthKind="implicit" maxOccurs="1">
<xs:complexType>
<xs:sequence dfdl:separator="%SP; %NL; %SP;%NL;" dfdl:separatorPosition="postfix" dfdl:separatorSuppressionPolicy="anyEmpty">
<xs:element name="pixel" type="xs:integer" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema> |
An example of the XML produced the above DFDL schema when applied to a PGM file is shown below.
Code Block |
---|
<ex:file xmlns:ex="http://example.com">
<ex:header>
<ex:type>P2</ex:type>
<ex:dimensions>
<ex:width>16</ex:width>
<ex:height>16</ex:height>
</ex:dimensions>
<ex:depth>255</ex:depth>
</ex:header>
<ex:pixels>
<ex:pixel>136</ex:pixel>
<ex:pixel>136</ex:pixel>
<ex:pixel>136</ex:pixel>
...
<ex:pixel>136</ex:pixel>
<ex:pixel>136</ex:pixel>
</ex:pixels>
</ex:file> |
Anchor Medici Medici
Medici Extractors
Medici | |
Medici |
Medici extractors typically serve to automatically extract some new kind of information from a file's content when it is uploaded into Medici. These extractors do this by connecting to a shared RabbitMQ bus. When a new file is uploaded to Medici it is announced on this bus. Extractors that can handle a file of the type posted on the bus are triggered and the data they in turn create is returned to Medici as derived data to be associated with that file. The extractors themselves can be implemented in a variety of languages.
...