Yleinen asiakirja

Ohjelmiston tavoitteena on toteuttaa siirrettävä, tehokas ja laajennettavissa oleva asiakirjojen käsittelykehys, jossa on kohtuulliset suunnittelu- ja ajotyökalut. Yhtä asiakirjamallia voidaan käsitellä useilla alustoilla, viedä eri tulostusmuotoihin ja arkistoida. Tuonti- ja vientimoduuleja voidaan lisätä helposti sovellusrajapintojen kautta tai käyttämällä suoraviivaista ja avointa XML-pohjaista asiakirjaformaattia5. JavaScriptiä voidaan käyttää mukautettujen toimintojen toteuttamiseen.

Editor käsittelee asiakirjan kahta pääasiallista osaa – ulkoasua ja tietomallia. Ulkoasu rakentuu sisäkkäisistä fragmenteista, jotka ovat asiakirjan loogisia alayksiköitä. Yksinkertaisessa staattisessa käyttötapauksessa fragmentti vastaa sivua. Mittasuhteet ovat kiinteät, ja sisältö sisältää tekstimerkintöjä, viivoja, käyriä, kuvia, viivakoodeja ja muita vastaavia elementtejä. Dynaaminen dokumentti voidaan rakentaa käyttämällä mielivaltaista määrää sisäkkäisiä elementtejä. Esimerkiksi tyypillisessä laskussa on otsikot, alatunnisteet ja dynaamiset säiliöt laskun riveille9. Laskun rivifragmentti sidotaan tietomallin invoice_rows-kokoelmaan suunnitteluaikana, ja säiliöfragmentti täytetään toistuvilla rivien instansseilla suoritusaikana. Jokaisella fragmenttisäiliöllä on oma asettelumenetelmänsä (esimerkiksi pystysuora pinoaminen, vaakasuora kääriminen, kiinteä sijainti jne.).

Asiakirjan muoto

Tiedostomuoto perustuu XML-muotoon, mikä helpottaa käsittelyä myös kolmannen osapuolen työkaluilla. Asiakirjan tekstisisältö käyttää UTF-8-koodattua Unicodea. Mukautetut tiedot voidaan tallentaa yhdessä DOM:n (dokumentin objektimallin) eri osien kanssa sanakirjoina. Sanakirja on sisäkkäinen kokoelma avain-arvopareja, joka on käytännössä minitietokanta mielivaltaisille tiedoille. Kun mukautetun ratkaisun on tallennettava tietoja asiakirjan mukana, ne voidaan lisätä ilman, että tiedostomuotoa on muutettava.

Useimmilla DOM:n elementeillä on nimiattribuutti. Nimen arvo ei ole vapaata tekstiä, vaan elementin käyttö JavaScriptin avulla edellyttää syntaksirajoituksia. Nimeä on voitava käyttää myös asiakirjan sisäisen polun määrittelyssä. Käyttöliittymä ilmoittaa (mutta ei suoraan estä) välilyöntien ja muiden ei-tuettujen merkkien käytöstä nimessä. Nimen yhteydessä näkyvää info -ominaisuutta voidaan käyttää elementin vapaamuotoisena kuvauksena. Sekä name että info ovat valinnaisia arvoja. Lisätietoja on asiakirjan muoto -sivulla.

Scriptaaminen

Asiakirjan sisältöä ja muotoilua tai yleistä käyttäytymistä voidaan parantaa luomalla JavaScript-laajennuksia. Editorissa on skriptien JavaScript-perusmuokkaustyökalu ja ohjattu toiminto malliskriptien luomista varten. Täm helpottaa scriptien kanssa työskentelyä. Java kielen tuki on aikaisempaa laajempi. Javascript koodia voidaan myös muokata millä tahansa ulkoisella tekstieditorilla tai kehitysympäristössä (esimerkiksi Visual Studio Code). Skriptit ovat erillisiä tiedostoja, jotka on linkitetty asiakirjaan. Scriptien koodi ei ole siis lomaketiedoston sisällä, tämä helpottaa käyttäjää myös löytämään tiedot.

Huomaa, että ohjelman esikatselu (Preview) suorittaa asiakirjan yhdistettynä skriptien kanssa, ja skriptikoodin antamat lokiviestit näkyvät sovelluksen loki-ikkunassa. Käytännössä esikatselu on sama kuin jos ajaisit paikallisesti merge -ohjelmiston. Esikatselutyökalua voidaan käyttää perusskriptin testaamiseen.

Suodattimet (Filters)

Suodattimet tarjoavat yleisen tavan määrittää ulkoinen sovellus tietovirran muokkaajaksi. Tätä voidaan käyttää myös integraatioihin. Suodattimet voivat itse asiassa sisältää useamman kuin yhden käsittelyvaiheen, joten vaikutus on samankaltainen kuin Unixin komentorivin standarditulo- ja -lähtövirtojen ketjuttaminen (Pipe menetelmä). Suodattimilla voidaan näinollen tehdä monimutkaisiakin työnkulkuja. Suodattimen suoritus on toteutettu sekä Linux- että Windows-alustoille.

Asiakirjan esikatselu on toteutettu suodattimena, joka suorittaa yhdistämisajakomponentin. Suodatintiedostot asennetaan yleensä pääsovelluksen viereen ./Filters/-alikansioon.

Esikatselu

Asiakirjojen käsittelyä koskeva runtime-sovellus on integroitu editoriin, ja se tarjoaa todellisen esikatselun siirrettävästä tuotantomoottorista, jota voidaan käyttää Windows- ja Linux-ympäristöissä.

Esikatselu tallentaa väliaikaisen kopion asiakirjasta ja käynnistää Editorin kanssa asennetun valinnaisen yhdistämissovelluksen tuottamaan SVG-tulosteen, joka renderöidään esikatselualueella. Prosessi määritetään suodatintiedoston avulla, joka sijaitsee sovelluskansiossa osoitteessa .Filterspreview.filter. Tämän asetelman etuna on se, että esikatselu tuotetaan varsinaisella suoritusajalla, joten kyseessä ei ole tiivis emulointi vaan todellinen esitys.

Esimerkin XML-datan tiedostonimi voidaan syöttää esikatselupaneelin yläosassa olevaan kenttään. Esikatselu yrittää täyttää asiakirjan tiedoilla ja suorittaa asetteluprosessin.

Julkaisija

Julkaisijamoduuli integroi editorin yhteensopivaan REST-verkkopalveluun. Julkaisija näyttää luettelon asiakirjoista, jotka on asennettu verkkopalveluun, joka voi esimerkiksi käyttää asiakirjoja verkkolomakkeina, tarjota lataus- tai käsittelypalveluja. Julkaisijan tarkoituksena on seurata paikallisia ja asennettuja versioita, ladata asiakirja muokattavaksi ja ladata se uudelleen muutosten kanssa.

Valmistelemme parhaillaan julkista verkkopalvelua tämän toiminnallisuuden testaamiseksi.

Käyttöliittymä

Sovelluksen pääikkuna on jaettu kolmeen pääalueeseen.

A – asiakirjan rakenteen näkymä B – päämuokkausalue C – työkalu- ja ominaisuuksien paneelit.

Vasen sivupaneeli

Asiakirjan rakennealue sisältää asiakirjan DOM-puunäkymän, tekstimallinäkymän ja komentohistoriapaneelin. DOM-puu näyttää asiakirjan elementtihierarkian aina asiakirjan perusobjekteihin asti. Se ei laajenna tekstilappujen ja resurssiobjektien sisäistä sisältöä. Tekstimalli-näkymä näyttää yksittäisen tekstilapun rakenteen. Komentoluettelo näyttää luettelon suoritetuista muokkauskomennoista.

Pääpaneeli

Päämuokkausalue sisältää piirtoalustanäkymän, XML-lähteen (vain luku) näkymän, skriptieditorin ja esikatselun.

Kangas

Piirustuskangas näyttää asiakirjan fragmentit suunnittelutilassa, jossa voimme piirtää uusia objekteja, siirtää, muuttaa kokoa ja muokata tekstiä.

XML-näkymä

XML-näkymä näyttää asiakirjan sellaisena kuin se tallennetaan tiedostoon valinnaisella syntaksivärityksellä. Upotetut kuvan binäärikohteet rajataan tilan säästämiseksi. Nykyisen iteraation XML-sisältö on vain luettavissa.

Käsikirjoittaminen

Skriptieditori mahdollistaa erillisinä JavaScript-tiedostoina tallennettujen asiakirjan skriptien muokkaamisen.
Skriptieditoriin tulee suuria muutoksia tulevissa versioissa, joissa skriptit upotetaan ja niistä tulee kiinteämpi osa päädokumenttimallia. Toistaiseksi komentosarjan sisällön muutoksille on oma Undo/Redo-pinonsa, pikanäppäimet jne. Se on käytännössä erillinen tekstinmuokkaussovellus Editorin sisällä. Ei pitäisi olla myöskään ongelma käyttää mitä tahansa ulkoista sovellusta käsikirjoitusten muokkaamiseen. Lisätietoja skriptauksesta on yhdistämisen skriptauksen viitesivulla.

Työkalut

Päänäkymän oikeanpuoleisin alue sisältää ominaisuustaulukon ja erilaisia työkaluja.

Kiinteistöverkko

Ominaisuudet-paneelissa esitellään valitun objektin eri ominaisuudet. Valinta voidaan tehdä napsauttamalla visuaalista objektia canvas-näkymässä tai käyttämällä DOM-puunäkymää.

Muut työkalut

Sijainti-työkalu näyttää visuaalisten kohteiden koordinaatit ja mitat. Snap-pisteasetukset määräävät, miten tietty elementti on vuorovaikutuksessa sisältävässä fragmentissa määritellyn ruudukon kanssa. Järjestä-työkalut helpottavat sisältöobjektien z-järjestyksen muuttamista ja valittujen objektien kohdistamista toisiinsa nähden.

Sivellintyökalulla määritetään graafisen objektin, kuten laatikon tai tekstikehyksen, täyttö. Objektin täyttötyyppi voi olla läpinäkyvä, yksivärinen, kuvio tai kaltevuus. Kun muokkaat tekstiä, sivellinpaneeli määrittää valitun tekstialueen taustavärin.

Kynä-työkalulla voidaan muuttaa objektin viivaominaisuuksia. Kynä koskee viivaa, jota käytetään laatikoiden, ellipsien, monikulmioiden ja polkujen piirtämiseen. Sitä voidaan käyttää myös fragmenttiobjektien kanssa, joilla on kehysmäärittely.

Teksti-työkalulla hallitaan teksti- ja muuttujakenttien ominaisuuksia. Tekstin väriä voidaan muuttaa työkalupakin alaosassa olevalla värivalitsimella. Sivellin-, kynä- ja tekstityökalussa näkyvät värinäytteet ovat peräisin jostakin yleisestä paletista. Näitä paletteja voi muokata Työkalut > Paletit -valikosta tai Asetukset-valintaikkunan paneelista. Huomaa, että käyttäjän määrittelemät paletit tallennetaan paikallisen koneen sovellusdatakansioon, eikä niitä tallenneta asiakirjaan.

Ristikkotyökalun avulla voit muokata valitun fragmentin ruudukkoja. Huomaa, että kullakin fragmentilla voi olla useita ristikoita (tai ei yhtään). Ruudukko määritellään fragmentissa, joten jokaisella sisäkkäisellä fragmentilla voi olla erilainen ruudukkoasetelma. Ruudukko on kohteen paikannuksen ja kohdistuksen apuväline, joka muistuttaa piirtopaperin viivoja. Kukin objekti, mukaan lukien alilohkot, voidaan liittää johonkin verkosta (tai ei mihinkään). Tämä yhteys määritellään kohteen napsautusasetuksissa.

Laajennukset luettelee asiakirjan skriptit. Laajennukset ovat käytettävissä myös pääpaneelin Laajennukset-välilehden kautta.