Generiskt dokument

Programvaran syftar till att implementera ett portabelt, effektivt och utbyggbart ramverk för dokumenthantering med en rimlig uppsättning design- och runtimeverktyg. En enda dokumentmall kan bearbetas på flera plattformar, exporteras till olika utdataformat och arkiveras. Import- och exportmoduler kan enkelt läggas till via API:er eller genom att använda det enkla och öppna XML-baserade dokumentformatet5. JavaScript kan användas för att implementera anpassade funktioner.

Editor arbetar med två viktiga aspekter av ett dokument – layout och datamodell. Layouten är uppbyggd av nästlade fragment, som är logiska underenheter i dokumentet. I ett enkelt statiskt användningsscenario motsvarar ett fragment en sida. Det finns fasta mått, och innehållet innehåller textetiketter, linjer, kurvor, bilder, streckkoder och liknande element. Ett dynamiskt dokument kan byggas upp med hjälp av en godtycklig nivå av kapslade element. I en vanlig faktura finns det till exempel sidhuvud, sidfot och dynamiska behållare för fakturarader9. Fakturaradsfragmentet är bundet till invoice_rows-samlingen i datamodellen vid designtidpunkten, och containerfragmentet kommer att fyllas med upprepade instanser av rader vid runtime. Varje behållare med fragment har sin egen layoutmetod (t.ex. vertikal stapling, horisontell inplastning, fast position, etc.)

Dokumentformat

Filformatet är baserat på XML, vilket underlättar bearbetning även med verktyg från tredje part. Textinnehållet i dokumentet använder UTF-8-kodad Unicode. Anpassade data kan lagras tillsammans med olika delar av DOM (document object model) som lexikon. En dictionary är en nästlad samling av nyckel-värdepar, i princip en minidatabas för godtyckliga data. Om en anpassad lösning behöver lagra data tillsammans med dokumentet kan detta läggas till utan att filformatet behöver ändras.

De flesta element i DOM har attributet name. Namnets värde är inte fritext; det finns syntaxrestriktioner som är nödvändiga för att tillåta elementåtkomst från JavaScript. Namnet måste också kunna användas som en enhet i dokumentets interna sökvägsspecifikation. Användargränssnittet rapporterar (men förhindrar inte direkt) användningen av mellanslag och andra tecken som inte stöds i namnet. Egenskapen info som visas tillsammans med namnet kan användas som en fritextbeskrivning av elementet. Både name och info är valfria värden. Mer information finns på sidan om dokumentformat.

Skript

Dokumentets beteende kan förbättras genom att skapa JavaScript-tillägg. Editorn innehåller ett grundläggande JavaScript-redigeringsverktyg för skript och en guide för att skapa mallskript. JS-koden kan också redigeras med valfri extern textredigerare eller utvecklingsmiljö. Skripten är separata filer som är länkade till dokumentet.

Observera att förhandsgranskningen kommer att köra dokumentet i merge tillsammans med skripten. Under denna process visas även eventuella loggmeddelanden som utfärdas av skriptkoden i programmets loggfönster, vilket ger dig en tydlig översikt över alla åtgärder och händelser som sker vid sammanfogningen. Förhandsgranskningsverktyget kan användas för grundläggande skripttestning.

Filter

Filter är ett generiskt sätt att specificera en extern applikation som en modifierare av dataströmmen20. Filter kan faktiskt innehålla mer än ett bearbetningssteg, så effekten liknar kedjning av standardinmatnings- och utmatningsströmmar på Unix kommandorad21. Filter runtime är implementerad för både Linux- och Windows-plattformarFilters.

Filter är ett generiskt sätt att specificera en extern applikation som en modifierare av dataströmmen. Filter kan faktiskt innehålla mer än ett bearbetningssteg, så effekten liknar kedjning av standardinmatnings- och utmatningsströmmar på Unix kommandorad. Filterkörtiden är implementerad för Linux- och Windows-plattformar. Dokumentförhandsgranskningen är implementerad som ett filter som kör runtime-komponenten Merge. Filterfiler installeras vanligtvis bredvid huvudprogrammet i undermappen ./Filters/.

Förhandsvisning

Runtime-applikationen för dokumenthantering är integrerad med editorn och ger faktisk förhandsgranskning från den portabla produktionsmotorn som kan användas i Windows- och Linux-miljöer.

Förhandsgranskning lagrar en tillfällig kopia av dokumentet och initierar det valfria sammanfogningsprogrammet som har installerats med Editor. Detta program används för att producera SVG-utdata, vilken sedan visas i förhandsgranskningsområdet. Processen konfigureras med hjälp av filterfilen som återfinns i .Filterspreview.filter i applikationsmappen. En av fördelarna med denna inställning är att förhandsgranskningen genereras i realtid under körning, vilket innebär att det inte handlar om en nära emulering utan snarare en autentisk och exakt återgivning av resultatet.

Filnamnet för XML-data kan anges i fältet längst upp i förhandsgranskningspanelen. Förhandsgranskningen kommer att försöka fylla dokumentet med data och utföra layoutprocessen.

Utgivare

Publiceringsmodulen integrerar redigeraren med en kompatibel REST-webbtjänst. Utgivaren visar en lista över dokument som installerats på en webbtjänst som t.ex. kan använda dokumenten som webbformulär, tillhandahålla nedladdning eller bearbetningstjänster. Syftet med utgivaren är att hålla reda på lokala och installerade versioner, ladda ner dokumentet för redigering och ladda upp det igen med ändringar.

För närvarande förbereder vi en offentlig webbtjänst för att testa denna funktionalitet.

Användargränssnitt

Applikationens huvudfönster är uppdelat i tre huvudområden.

A – vy över dokumentstruktur B – huvudredigeringsområde C – verktygs- och egenskapspaneler.

Vänster sidopanel

Dokumentstrukturområdet (Document Object Model) innehåller flera viktiga komponenter för att hantera dokumentets struktur och innehåll. Dessa komponenter inkluderar DOM-trädvyn (Document Object Model-trädvy), som ger en hierarkisk representation av dokumentets element och deras relationer. Textmodellvyn (Textmodellvy) ger en detaljerad översikt över dokumentets textinnehåll och dess egenskaper, medan kommandohistorikpanelen (Kommandohistorikpanel) håller en logg över de åtgärder och kommandon som har utförts på dokumentet, vilket underlättar för spårning och felsökning. DOM-trädet visar dokumentelementens hierarki ner till de grundläggande dokumentobjekten. Det expanderar inte internt innehåll i textetiketter och resursobjekt. Textmodellvyn visar strukturen i enskilda textetiketter. Kommandolista visar en lista över utförda redigeringskommandon.

Huvudpanel

Huvudredigeringsområdet innehåller ritningsduk, XML-källvy (skrivskyddad), skriptredigerare och förhandsgranskning.

Canvas

Ritningsduken visar dokumentfragmenten i designläge, här kan vi rita nya objekt, flytta, ändra storlek och redigera text.

XML-vy

XML-vyn visar dokumentet så som det kommer att lagras i filen med valfri syntaxfärgning. De binära objekten i den inbäddade bilden beskärs för att spara utrymme. XML-innehållet i den aktuella iterationen är skrivskyddat.

Skript

Skriptredigeraren möjliggör redigering av tillhörande dokumentskript som lagras som separata JavaScript-filer.
Skriptredigeraren kommer att genomgå stora förändringar i framtida versioner där skripten kommer att bäddas in och bli en mer integrerad del av den huvudsakliga dokumentmodellen. För närvarande har ändringarna i skriptinnehållet sin egen Undo/Redo-stack, kortkommandon etc. Det är i princip ett separat textredigeringsprogram inuti Editor. Det bör inte heller vara några problem att använda externa program för skriptredigering. Mer information om skript finns på referenssidan för sammanslagning av skript.

Verktyg

Området längst till höger i huvudvyn innehåller egenskapstabell och olika verktyg.

Fastighetsgaller

I panelen Egenskaper visas olika attribut för det valda objektet. Urvalet kan göras genom att klicka på det visuella objektet i canvasvyn eller med hjälp av DOM-trädvyn.

Andra verktyg

Verktyget Position visar koordinater och dimensioner för visuella objekt. Snap point-inställningar dikterar hur ett specifikt element interagerar med rutnätet som definieras i det innehållande fragmentet. Verktygen “Arrange” underlättar ändringar i innehållsobjektens z-ordning och justerar valda objekt i förhållande till varandra.

Verktyget Pensel definierar fyllningen i ett grafiskt objekt, t.ex. en ruta eller textbehållare. Fyllningstypen för ett objekt kan vara transparent, enfärgad, mönster eller gradient. När du redigerar text anger penselpanelen bakgrundsfärgen för det valda textområdet.

Med pennverktyget kan du ändra ett objekts linjeegenskaper. Pennan gäller för linjen som används för att rita rutor, ellipser, polygoner och banor. Det kan också användas med fragmentobjekt som har en ramdefinition.

Verktyget Text styr egenskaper i text- och variabelfält. Färgen på texten kan ändras med färgväljaren längst ned i verktygslådan. Färgprover som visas i pensel-, penn- och textverktyget kommer från en av de globala paletterna. Dessa paletter kan anpassas via menyn Verktyg > Paletter eller från panelen i dialogrutan Inställningar. Observera att användardefinierade paletter lagras i programdatamappen på den lokala datorn och inte lagras i dokumentet.

Med rutnätsverktyget kan du redigera rutnäten på det valda fragmentet. Observera att varje fragment kan ha flera rutnät (eller inget alls). Rutnätet definieras på fragmentet, så varje nästlat fragment kan ha en annan uppsättning rutnät. Ett rutnät är ett hjälpmedel för att positionera och rikta in objekt, ungefär som linjerna på ett ritpapper. Varje objekt, inklusive underfragment, kan anslutas till ett av griden (eller inget). Denna anslutning definieras i snapinställningarna för objektet.

Tillägg listar dokumentets skript. Tilläggen är också tillgängliga via fliken Tillägg i huvudpanelen.