Hoe open je een .RTF-bestand? Wat betekent het RTF-bestandsformaat en hoe u het opent

De MS Office-applicatie is bekend bij vrijwel alle computergebruikers, zo niet over de hele wereld, dan zeker in ons land. Deze populariteit is grotendeels te danken aan de groeiende behoefte van de moderne wereld om informatie te creëren en uit te wisselen. In elke moderne overheidsinstantie worden elke dag duizenden documenten gemaakt en verzonden, en daarom is er een dringende behoefte aan programma's die dit proces kunnen standaardiseren en vereenvoudigen.

In dit opzicht is het rtf-formaat echter veel interessanter, dat in de meeste gevallen kan worden gepositioneerd als een universeel middel voor het verzenden van informatie. Trouwens, waarom is hij zo goed? Waarom gebruik je geen doc?

Feit is dat het rtf-formaat openlijk wordt ondersteund door bijna alle besturingssystemen en ook door de eenvoudigste kan worden gelezen. Om het te gebruiken, is het niet nodig om complexe, zware en dure kantoorpakketten te installeren. De meeste toepassingen voor het werken met tekstgegevens ondersteunen het opslaan in deze standaard.

Maar dit is niet eens de reden waarom gebruikers zo dol zijn op het rtf-formaat. In tegenstelling tot het bovengenoemde document, evenals docx, odt en andere soortgelijke bestanden, kan het alleen tekst bevatten. Onervaren gebruikers denken misschien dat er niets anders is in alle bovengenoemde soorten tekstdocumenten, maar dat is niet zo. Het is een feit dat hetzelfde kantoordocumentformaat, geliefd bij onze binnenlandse gebruikers, macro's kan bevatten. In feite zijn dit echte programma's die door aanvallers voor minder goede doeleinden kunnen worden gebruikt.

Ze zijn verantwoordelijk voor een aanzienlijk deel van de infecties die optreden wanneer tekstdocumenten die van internet zijn gedownload, worden gelanceerd. Met het rtf-formaat riskeer je eigenlijk niets. Maar het heeft ook bepaalde nadelen waarmee u rekening moet houden bij het redden van uw baan. Om bijvoorbeeld een rtf-formaat naar txt te converteren, moet je nog steeds een of andere kantoortoepassing gebruiken. Maar dit levert geen specifiek probleem op.

Het kan bijvoorbeeld niet worden gebruikt om dynamisch gekoppelde documenten te maken. De introductie van objecten in het ontvangende document leidt tot een aanzienlijke toename van de omvang ervan. Hierbij wordt soms gebruik gemaakt van een werkwijze waarbij alleen een verbinding met de bron tot stand wordt gebracht. In dit geval wordt het object, hoewel het wordt weergegeven in het doeldocument, er niet in opgeslagen, omdat er in het document alleen een link naar het bronbestand of -object aanwezig is. Plaats daarom geen bijzonder grote afbeeldingen in rtf-formaat.

Bovendien heeft het ook bepaalde opmaakproblemen. Denk er dus niet eens aan om een ​​belangrijk document of diploma in rtf-formaat op te slaan. Je zult altijd een manier vinden om het te openen, maar niemand kan het behoud van het oorspronkelijke uiterlijk van je creatie garanderen. Bovendien is het vrijwel volledig afwezig. Simpel gezegd: als u uw werk in een oude versie van het programma hebt opgeslagen, wordt het vrijwel zeker niet geopend in de nieuwe applicatie.

U moet niet vertrouwen op OpenSource-producten, aangezien Microsoft (dit bedrijf is namelijk de maker van het formaat) op dit moment alleen de primaire versies van rtf openbaar beschikbaar heeft gemaakt.

Dit formaat is door Microsoft gedefinieerd als een standaardformaat voor het uitwisselen van tekstdocumenten. Daarom is dit formaat qua doel vergelijkbaar met het SYLK-formaat voor spreadsheets. RTF wordt door veel Microsoft-producten ondersteund. Vanaf versie 2.0 werd het bijvoorbeeld in Windows geïntroduceerd als een klembordformaat, waardoor het mogelijk werd gegevens uit te wisselen tussen verschillende Windows-applicatieprogramma's. Bovendien wordt het RT-formaat ondersteund door WORD voor Macintosh, te beginnen met versie 3.X, en WORD voor pc, te beginnen met versie 4.X.

RTF gebruikt alleen tekenrepresentatieve codes uit de ASCII-, MAC- en PC-tekensets om documenten uit te wisselen. Naast tekst bevat het bestand in RT-formaat besturingsopdrachten in leesbare vorm.

Het document bestaat voornamelijk uit besturingsopdrachten voor het opzetten van een programma voor het lezen van bestanden in RTF-formaat. Deze commando's kunnen worden onderverdeeld in controlewoorden (controlewoorden) en controlekarakters (controlesymbolen).

Het controlewoord is een reeks tekens met een scheidingsteken (scheidingsteken) aan het einde:

\letterreeks

Vóór het stuurwoord wordt een backslash "\" (backslash) geplaatst. De volgende tekens kunnen als scheidingstekens worden gebruikt:

  • Ruimte (ruimte), waarin dit symbool verwijst naar een controlewoord;
  • Nummer of het "-" teken. Deze tekens moeten worden gevolgd door een gescheiden parameter. Spaties of andere tekens dan cijfers en letters kunnen als scheidingsteken worden gebruikt;
  • Alle tekens behalve cijfers en letters. Deze symbolen zijn niet van toepassing op controle woord.

In het RT-formaat worden letters van “A” tot “Z” en van “a” tot “z”, evenals cijfers van “0” tot “9” gebruikt om de besturingsvolgorde te specificeren. Nationale symbolen behoren niet tot controle-informatie.

Als, controle karakters Er worden aparte letters gebruikt. Elk controleteken wordt voorafgegaan door een backslash "\":

\controle-symbool

Momenteel zijn slechts enkele van deze symbolen gedefinieerd. Daarom kunnen onbekende tekens bij het lezen worden overgeslagen.

In het RT-formaat is het mogelijk om individuele reeksen in groepen te combineren met behulp van haakjes:

(begin van de groep) einde van de groep

Dergelijke groepen worden bijvoorbeeld gemaakt bij het beschrijven van voetnoten, kopteksten, enz. Als u de tekens "\", "(" of ")" in platte tekst moet plaatsen, moet u ze vooraf laten gaan door een backslash:

\\ \{ \}.

Hierdoor kan het programma dat de RTF-reeks leest, herkennen dat het teken niet als controleteken moet worden geïnterpreteerd.

Het RT-formaat gebruikt ook enkele tekencodes om het afdrukken te regelen

CR- en LF-tekens in tekst worden overgeslagen. Microsoft gebruikt deze symbolen voor de duidelijkheid bij het weergeven van een RTF-bestand. Binnen controlewoorden kunnen de karakters CR en LF een speciale betekenis hebben; dit wordt in meer detail besproken bij de beschrijving van de commando's.

Speciale controlewoorden

RTF heeft controlewoorden voor speciale doeleinden. Laten we deze woorden en hun doel kort beschouwen.

Controlewoord paginanummer wijzigen geeft het huidige paginanummer weer.

Controlewoord voetnoot wijzigen activeert automatische nummering van voetnoten.

Door te gebruiken datum wijzigen U kunt de huidige datum weergeven.

Door te gebruiken tijd veranderen U kunt de huidige tijd weergeven.

\chftnsep

Geeft een wijziging aan in de lijn die de voetnoten scheidt van de tekst.

Met behulp van deze reeks wordt de tekst van de formule ingevoerd.

Geeft een indexsubitem aan.

Tekst kan worden overgeslagen bij het lezen van het RTF-formaat.

Specificeert een harde (niet-afbrekende) spatie tussen twee woorden, d.w.z. in deze positie kan de zin niet worden gesplitst wanneer deze naar de volgende regel wordt overgedragen.

Het symbool geeft zachte overdracht aan (niet vereist koppelteken).

Het symbool geeft een onbreekbaar koppelteken aan (vast koppelteken), op de plaats waarvan het woord niet kan worden verdeeld.

De reeks maakt directe invoer van hexadecimale getallen in tekst mogelijk. Ze worden gespecificeerd in plaats van hh-tekens.

Deze reeks stelt de overgang naar een nieuwe pagina in.

Deze reeks veroorzaakt een overgang naar een nieuwe regel in de tekst.

Met deze volgorde wordt het einde van een alinea in de tekst gemarkeerd. Vervolg \para kan worden vervangen door de reeks \ 10 of \ 13. Tegelijkertijd \10 komt overeen met ASCII-tekencode 10 (vervoer retour). U kunt de ASCII-code 10 (CR) niet rechtstreeks invoeren, omdat het wordt door de lezer genegeerd.

Deze reeks markeert het einde van een tekstfragment of tekstparagraaf.

Deze reeks vervangt de tabulator. U kunt ook direct de ASCII-code 09H opgeven.

Einde van tabel (kolom).

Einde van tabel (rij).

Bestemmingscontrolewoorden

Met behulp van de hieronder beschreven stuurwoorden kunt u basisinstellingen voor de RTF-lezer uitvoeren. Ze kunnen alleen voorkomen aan het begin van een document of aan het begin van een groep. Alle operatoren samen met parameters moeten tussen haakjes staan, bijvoorbeeld:

(\rtf0\pc.......)

Hieronder wordt het formaat van enkele uitspraken beschreven.

\rtf<параметр>

Specificeert het begin van het bestand. Het programma dat wordt gebruikt om het bestand te maken, kan het versienummer als parameter opgeven. Bijvoorbeeld:

(\rtf0.......)

Het label moet aan het begin van het bestand staan. Deze verklaring kan worden gevolgd door andere verklaringen of een sluitend haakje.

Het instellen van het coderingstype voor de opgeslagen tekst gebeurt met behulp van de volgende operators:

  • \ ansi: de tekst wordt opgeslagen in het standaard ASCII-formaat. Dit formaat wordt bijvoorbeeld in Windows gebruikt.
  • \mac:. tekst wordt opgeslagen in Macintosh-codering
  • \rs: Voor tekstuitvoer wordt IBM-PC-tekencodering gebruikt.
  • \rsa: IBM-PC-codepagina 850 (model PS\2).

Om teksten tussen verschillende systemen over te dragen, moet de \ansi-codering worden gebruikt.

\kleurtbl

Windows en andere programma's gebruiken paletten om te bepalen welke kleuren moeten worden gebruikt. Meestal bestaat het palet uit 16 verschillende kleuren, verkregen door de primaire kleuren te combineren: rood, groen en blauw. Team \kleurtbl Hiermee kunt u individuele definities in het palet wijzigen. Voor elke kleur geeft de tabel de waarden van de rode, groene en blauwe componenten aan. Elke kleur wordt beschreven door drie parameters:

\rood000 \groen000 \blauw000

In plaats van 000 wordt de waarde van de kleurfractie aangegeven in het bereik van 0 tot 255. Voorbeeld: in een tabel bestaande uit 16 kleuren moeten de kleuren 0 en 2 opnieuw worden gedefinieerd. De volgende volgorde kan worden opgegeven om kleuren te overschrijven:

( \colortbl \red128\groen64\blauw128\;;\red0\groen64\blauw128; )

De kleurdefinitie eindigt met een puntkomma. Omdat de eerste kleur ongewijzigd blijft, staan ​​er twee ";"-tekens in de reeks. volg de een na de ander. De reeks eindigt met een haakje sluiten.

Exploitant \cfn definieert de achtergrondkleur (met de standaardinstelling n=0) en de operator \cbn- symboolkleur (bij standaardinstelling n=0).

\fonttbl

Deze operator wordt gebruikt om een ​​lettertypetabel samen te stellen en correleert daarmee de naam van het lettertype (lettertypegroep). nummer lettertype. Bij het definiëren van een lettertype kunt u de volgende operatoren gebruiken:

  • \fnil: naam van de lettertypegroep is onbekend. De uitvoer moet een standaardlettertype gebruiken.
  • \vanan: Er moeten Romeinse lettertypen worden gebruikt (bijvoorbeeld Times Roman)
  • \fswiss: deze operator vereist het gebruik van lettertypen van de Zwitserse groep (Helvetica, Swiss, enz.)
  • \fmodern: Er kunnen Pica-, Elite- en Courier-lettertypen worden gebruikt.
  • \fscript: Er worden cursieve lettertypen uit de groep Script gebruikt.
  • \fdecor: wanneer u deze operator opgeeft, moeten lettertypen worden geselecteerd uit de groep Decor (Oud Engels, enz.).
  • \ftech: selectie van een groep lettertypen met technische en wiskundige symbolen (SYMBOOL, enz.).

Het commando om een ​​lettertypegroep te maken kan uit de volgende instructies bestaan:

(\fonttbl\f0\fnil standaard;) (\fl\froman roman h;) (\f2\fswiss helvetica;)

Na het trefwoord \fonttbl gevolgd door het eerste lettertypenummer \f0. Vervolgens komt de definitie van de lettertypegroep. Hierna wordt het getal 0 aangegeven \fnul, die. groepsnaam onbekend. De volgende parameter specificeert de naam van het te selecteren lettertype (bijvoorbeeld romeinse h). Opmerking standaard vertelt het leesprogramma om een ​​standaardlettertype te gebruiken. Er staat een puntkomma achter de naam van het lettertype. In het bovenstaande voorbeeld zijn alleen de lettertypen met de nummers 1 en 2 gedefinieerd. De hele reeks kan worden gecombineerd tot een groep met behulp van accolades.

De lettertypetabel moet worden gevuld met waarden voordat de operator wordt aangetroffen \stijlblad of tekst. Standaardlettertype ingevoerd door operator \deffn.

\stijlblad

Deze operator definieert het lettertype van de alinea, d.w.z. grootte, stijl en naam van het lettertype, evenals hoe de alineatekst is uitgelijnd. Hierbij worden twee belangrijke parameters gebruikt:

  • \sgebaseerdop000: in plaats van de tekens 000 wordt het nummer aangegeven van het lettertype dat als het huidige wordt gebruikt.
  • \svolgende000: wijst het nummer toe van het volgende lettertype (stijl), dat het huidige wordt.

De operator zou er bijvoorbeeld zo uit kunnen zien:

(\stylesheet\s0\f3\fs20\qj Normaal;) (\sl\f3\fs30\b\qc Kopniveau 3;)

Lettertypen zijn genummerd van 0 tot n ( \s0...). Op de eerste regel is alineastijl 0 ( \s0) wordt de naam Normaal voorgeschreven. Tekst wordt uitgevoerd in lettertype 3 ( \f3), maat 10 punten ( \fs20). Parameter \qj geeft aan dat de inscriptie moet worden uitgelijnd volgens het formaat. De tweede regel definieert lettertypestijl 1, die een naam krijgt Kopniveau 3. De lettergrootte is 15 punten, vetgedrukt ( \B = vetgedrukt) en wanneer weergegeven, is de inscriptie gecentreerd ( \qc).

\afb

Deze operator wordt gebruikt bij het beschrijven van een afbeelding in bitmapformaat. De volgende parameters bevatten een beschrijving van de tekening in hexadecimale waarden. Parameters kunnen selectief worden gebruikt om de geometrie van de tekening of het formaat ervan te definiëren:

  • \pich000: operator specificeert de hoogte van de afbeelding in pixels. In plaats van drie nullen wordt een numerieke waarde vervangen. Als er geen operator is, wordt de hoogte van de tekening bepaald op basis van de huidige grafische gegevens. Met behulp van de parameter kunt u een specifieke hoogte voor de afbeelding instellen.
  • \piw000: operator specificeert de breedte van de afbeelding in pixels. Alles wat over de vorige operator wordt gezegd, is waar.
  • \fotogeschaald: Met deze operator wordt de tekening zodanig geschaald dat deze precies het toegewezen gebied vult.
  • \wmetafilen: De parameter geeft aan dat de gegevens worden opgeslagen in de Windows-metabestandsindeling. De parameter n specificeert het type metabestand (1 = MM-tekst).
  • \macafbeelding: Deze optie geeft aan dat de gegevens worden opgeslagen in het Macintosh Quick-Draw-formaat.
  • \bin000:. de parameter specificeert het aantal bytes. In plaats van drie nullen wordt een hexadecimaal getal geschreven.
  • \wbitmap: De parameter bepaalt het formaat van de bitmapafbeelding. De parameter n specificeert het type (0 komt overeen met een logische bitmap).
  • \brdrs: definieert een eenvoudig fotolijstje
  • \brdrdb: definieert een dubbele rand voor de afbeelding.
  • \brdrth: definieert een dikke lijn voor het fotolijstje.
  • \brdrsh: definieert een gearceerd kader voor de afbeelding
  • \brdrdot: definieert een stippellijn voor de tekening.
  • \brdrhaar: definieert een dunne lijn voor het kader van de afbeelding.
  • \picwDoeln: stelt de gewenste breedte van de afbeelding in twips in
  • \pichDoeln: stelt de gewenste hoogte van de afbeelding in twips in.
  • \picscalexn: specificeert horizontale schaling (n kan waarden aannemen van 1 tot 100, standaard -10).
  • \picscaleyn: stelt verticale schaling in (n kan waarden aannemen van 1 tot 100, standaard is 10).
  • \piccroptn: beschrijft de bovenmarge van een tekening in twips. Voor positieve waarden van de parameter n wordt het bovenste deel van de afbeelding afgesneden. Negatieve waarden van n maken het mogelijk een kader rond de afbeelding te creëren. De standaardwaarde voor n is 0.
  • \рiccrobп: beschrijft de ondermarge van een tekening in twips. Voor positieve waarden van de parameter n wordt het onderste deel van de afbeelding afgesneden. Negatieve waarden van n maken het mogelijk een kader rond de afbeelding te creëren. De standaardwaarde voor n is 0.
  • \рссрорrn: beschrijft de rechtermarge van een afbeelding in twips. Bij positieve waarden van de parameter n wordt het beeld rechts afgesneden. Negatieve waarden van n maken het mogelijk een kader rond de afbeelding te creëren. De standaardwaarde voor n is 0.
  • \piccropln: beschrijft de linkermarge van een afbeelding in twips. Bij positieve waarden van parameter n wordt het beeld links afgesneden. Negatieve waarden van n maken het mogelijk een kader rond de afbeelding te construeren. De standaardwaarde voor n is 0.
  • \wbmbitspixeln: bepaalt het aantal bits per pixel voor een bitmapafbeelding (de standaardwaarde is 1).
  • \wbmplanesn: definieert het aantal bitvlakken (standaardwaarde is 1).
  • \wbmwidtbbytesn: specificeert de lengte van de bitmap in bytes

De meest voorkomende oorzaak van problemen met het openen van het RTF-bestand is simpelweg het ontbreken van de juiste toepassingen op uw computer. In dit geval volstaat het om een ​​applicatie te vinden, downloaden en installeren die bestanden in RTF-formaat weergeeft - dergelijke programma's zijn hieronder beschikbaar.

Zoekmachine

Voer de bestandsextensie in

Hulp

Aanwijzing

Houd er rekening mee dat sommige gecodeerde gegevens uit bestanden die onze computer niet leest, soms in Kladblok kunnen worden bekeken. Op deze manier lezen we fragmenten van tekst of cijfers. Het is de moeite waard om te controleren of deze methode ook werkt bij RTF-bestanden.

Wat te doen als de applicatie uit de lijst al is geïnstalleerd?

Vaak moet een geïnstalleerde applicatie automatisch linken naar een RTF-bestand. Als dit niet gebeurt, kan het RTF-bestand met succes handmatig worden gekoppeld aan de nieuw geïnstalleerde applicatie. Klik eenvoudig met de rechtermuisknop op het RTF-bestand en selecteer vervolgens uit de beschikbare bestanden de optie "Standaardprogramma kiezen". Vervolgens moet u de optie "Bekijken" selecteren en uw favoriete applicatie vinden. De ingevoerde wijzigingen moeten worden goedgekeurd via de optie "OK".

Programma's die het RTF-bestand openen

Ramen
MacOS
Linux
Android

Waarom kan ik een RTF-bestand niet openen?

Problemen met RTF-bestanden kunnen ook andere oorzaken hebben. Soms kan zelfs het installeren van software op uw computer die RTF-bestanden ondersteunt het probleem niet oplossen. De reden voor de onmogelijkheid om het RTF-bestand te openen en ermee te werken kan ook zijn:

Ongepaste RTF-bestandsassociaties in registervermeldingen
- corruptie van het RTF-bestand dat we openen
- RTF-bestandsinfectie (virussen)
- te weinig computerbronnen
- verouderde stuurprogramma's
- verwijdering van de RTF-extensie uit het Windows-register
- onvolledige installatie van een programma dat de RTF-extensie ondersteunt

Het oplossen van deze problemen zou moeten resulteren in het vrijelijk openen en werken met RTF-bestanden. Mocht uw computer nog steeds problemen hebben met bestanden, dan dient u de hulp in te schakelen van een deskundige die de exacte oorzaak zal vaststellen.

Mijn computer toont geen bestandsextensies, wat moet ik doen?

In de standaard Windows-systeeminstellingen ziet de computergebruiker de RTF-bestandsextensie niet. Dit kan succesvol worden gewijzigd in de instellingen. Ga gewoon naar het "Configuratiescherm" en selecteer "Beeld en personalisatie". Vervolgens moet u naar "Mapopties" gaan en "Beeld" openen. Op het tabblad "Beeld" is er een optie "Extensies van bekende bestandstypen verbergen" - u moet deze optie selecteren en de bewerking bevestigen door op de knop "OK" te klikken. Op dit punt zouden de extensies van alle bestanden, inclusief RTF, gesorteerd op bestandsnaam moeten verschijnen.

De afkorting RTF staat voor “Rich Text Format”, dat wil zeggen “Rich Text Format”. Of simpel gezegd ontworpen: met verschillende stijlen, lettertypen, maten en kleuren letters. In veel gevallen kan dit documentformaat een oplossing zijn voor problemen, dus het is essentieel om er een idee van te krijgen voor iedereen die computers gebruikt. Zoals altijd zullen we tijdens het leren kennen van dit fenomeen zeker aandacht besteden aan praktische zaken.

Een beetje geschiedenis

Het gebeurde vroeger, in 1982. In die verre tijden toen Microsoft en Adobe vrienden waren. Ze moesten iets bedenken voor een nieuw programma: de tekstverwerker Word voor MS DOS, die in 1893 zou verschijnen.

Zonder er twee keer over na te denken, hebben we platte tekst genomen en er speciale opmaaktags aan toegevoegd (deze werden controletekens genoemd). Dit is bijvoorbeeld waar de paragraaf begint; hier moet de tekst cursief worden weergegeven, daar vetgedrukt, enzovoort.

Er is sindsdien veel veranderd, maar de essentie blijft hetzelfde: RTF zijn tekstbestanden, net als HTML-documenten. Je kunt ze openen in teksteditors zoals Kladblok in Windows en Gedit in Ubuntu om al die tags te bekijken als je wilt.

Microsoft en Adobe gingen al snel uit elkaar, maar het formaat bleef eigen. (Adobe besloot het concept te gebruiken voor een andere opmaaktaal, PostScript, wat later leidde tot de komst van PDF.) Welnu, Microsoft heeft in maart 2008 de nieuwste RTF-specificatie uitgebracht. De moderne elektronische en digitale wereld is erop gericht.

De essentie in het kort

De structuur van een RTF-document is vrij eenvoudig. Aan het begin van het tekstblok wordt een controleteken aangegeven, voorafgegaan door “\” (in de zin van een naar links hellende balk). Concreet: \b vóór een vetgedrukt blok, \i vóór cursief, \par vóór een alinea.

Omdat er geen afsluitende tags zijn, worden accolades () gebruikt om de blokken zelf aan te duiden. Daarom ziet vetgedrukt in de brontekst er als volgt uit: (\b bold) , en cursief ziet er als volgt uit: (\i hallo wereld Ну а в самом начале указывается сам формат \rtf1:!}

(\rtf1 \par (\i Hallo wereld Только что было приветствие курсивом. А теперь {/b немножко полужирного текста}. \par } !}

Dit is uiteraard een heel eenvoudig voorbeeld. In feite staan ​​een behoorlijk aantal van allerlei parameters op een rij via schuine lijnen: codering, taal en andere gegevens. Zoiets als:

(\rtf1\ansi\deff3\adeflang1025 (\fonttbl(\f0\froman\fprq2\fcharset0 Times New Roman;) \par (\i Hallo wereld, nogmaals Как видите, абракадабры {/b предостаточно} даже в маленьком фрагменте. \par } !}

Krachtige tekstverwerkers zoals Word of LibreOffice Writer voegen vooral graag veel controletekens in, waardoor alles te nauwgezet wordt gemarkeerd.

Bovendien worden Russische letters vervangen door byte-aanduidingen - codering van tekens (in de voorbeelden wordt ter wille van de duidelijkheid de vervanging niet getoond). Dit maakt de broncode volledig onleesbaar en vergroot deze buiten proporties.

Software

Naast het bovengenoemde Microsoft Word en LibreOffice Writer zijn er veel minder krachtige programma's, RTF-editors. Ze zijn echter niet allemaal geschikt voor werk.

FocusWriter is misschien wel de beste van de huidige gratis RTF-editors. U kunt woordenboeken voor spellingcontrole bijvoegen die in LibreOffice Writer worden gebruikt. Het werkt zeer snel in zowel Windows als Ubuntu, neemt weinig ruimte in beslag en verbruikt geen systeembronnen. Het interface-ontwerp verandert om aan verschillende smaken te voldoen.

Het onthoudt koppig en probeert het laatst geopende document bij het opstarten te laden - misschien is dit nog steeds een nadeel. In de eerste plaats ontworpen voor schrijvers die aan één boek werken, in plaats van meerdere tegelijk. In overeenstemming met hetzelfde concept wordt de werkbalk verborgen voordat u de muisaanwijzer beweegt, zodat niets u afleidt van uw werk.

Maar deze interface is erg handig op netbooks en andere apparaten met een klein display. Artikelen, brieven en allerlei aantekeningen schrijven is een plezier.

Waarom heb je RTF nodig?

Ten eerste zijn tekstbestanden niet geïnfecteerd met virussen en is het onmogelijk om er kwaadaardige macro's in te plaatsen. *rtf-bestanden zijn volkomen veilig, net als *txt. Maar *doc is heel goed in staat om voor onaangename verrassingen te zorgen.

Ten tweede wordt Rich Text Format begrepen door alle moderne tekstverwerkers en uiteraard door RTF-editors in alle populaire besturingssystemen.

Uw nederige dienaar zag met eigen ogen hoe Word 2010 in Windows 7 botweg weigerde *odt made in LibreOffice te openen. Hij zei dat het bestand een fout bevatte. Ik moest de flashdrive terug naar de computer brengen met Ubuntu (gelukkig bevond deze zich in een nabijgelegen kantoor) en het document naar RTF converteren. Waarna Word het bestand zonder bezwaar opende.

Hoe ermee te leven

Kleine Russischtalige documenten van tien tot vijftien pagina's kunnen veilig in RTF worden opgeslagen. Naar moderne maatstaven zullen ze weinig ruimte in beslag nemen. Maar *rtf-bestanden met hele romans zullen ongelooflijk toenemen en zullen, wanneer ze worden geopend, een behoorlijke hoeveelheid CPU-belasting vergen. Omdat de letters van het Russische alfabet worden vervangen door bytecoderingsaanduidingen, zoals eerder vermeld.

Laten we zeggen dat u tijdens het werken in Ubuntu snel een kleine tekst moet opslaan die u later in Windows moet openen. Als je *txt aanmaakt in Gedit, zal Kladblok hoogstwaarschijnlijk iets vreemds weergeven in plaats van letters, zonder de codering automatisch te herkennen.

Maar als u een snelle FocusWriter gebruikt en *rtf produceert, zullen er geen problemen zijn, alles wordt normaal weergegeven. De codering wordt in de broncode aangegeven na \rtf1 .

Laten we het samenvatten

Rich Text Format (ook bekend als RTF) is dus universeel en daarom geschikt voor het maken en openen van opgemaakte teksten in verschillende besturingssystemen. Het is echter het beste om het alleen voor kleine Russischtalige documenten te gebruiken. Voor Engelssprekenden (en anderen met Latijnse letters) is er geen probleem met opgeblazen bestanden.

Er kan van alles gebeuren in het leven, en als je plotseling documenten moet openen in het nog steeds populaire Windows, dan kunnen in dit geval de belangrijke bestanden die je in *odt in Ubuntu bewaart, worden gedupliceerd in *rtf. Omdat computers met Microsoft OS vaak Word hebben en niet LibreOffice Writer.

Eerdere publicaties:

Laten we ons onderzoek voortzetten om tekst uit verschillende gegevensformaten te verkrijgen. Nog niet zo lang geleden hebben we geleerd hoe we tekst kunnen extraheren uit gezipte XML-bestanden (odt en docx), en eerder deze week ook uit pdf. Vandaag gaan we verder met de beloofde rtf.

Rich Text Format (ook bekend als rtf), zou je kunnen denken, is een tamelijk vergeten, hoewel niet erg complex, formaat voor het weergeven van tekstgegevens. Welnu, het is relatief eenvoudig om aan tekst te komen, maar gedurende zijn geschiedenis: vanaf de eerste versie tot de huidige 1.9.1 - heeft het ongeveer 300 pagina's aan officiële documentatie verworven en een groot aantal add-ons die ons zullen hinderen bij een grotere mate bij het ontvangen van platte tekst. Laten we proberen ze te omzeilen...

Wat zit erin?

Laten we zoals gewoonlijk eens in het rtf-bestand kijken en kijken wat erin zit:

Wat zien we? Ik zie ons favoriete gedicht "Sail". We zien in eerste instantie een tekstformaat van 8 bits. Dit is al bemoedigend: als de brongegevens tekst bevatten, is het veel gemakkelijker om te begrijpen wat er gebeurt. Laten we nu eens kijken hoe we deze gegevens kunnen lezen. Om dit te doen, zal ik je een beetje theorie over dit onderwerp vertellen.

We gaan ervan uit dat rtf bestaat uit controle woorden, wat misschien wel zo is gegroepeerd in geneste sets. Het controlewoord begint met een backslash (\), de groep staat tussen accolades (( en )).

Het stuurwoord bestaat uit een reeks letters van het Engelse alfabet (van a tot z) en kan worden aangevuld met een numerieke parameter (eventueel negatief). Als alternatief kan het woord één niet-alfabetisch ascii-teken bevatten. Alles wat niet binnen deze regels valt, maakt geen deel uit van het controlewoord. Een reeks met de vorm \rtf1\ansi\ansicpg1251 kan dus eenvoudig worden verdeeld in drie woorden rtf met parameter 1 (hoofdversie van het formaat), ansi (huidige codering) en ansicpg met parameter 1251 (huidig ​​codepaginanummer 1251 - d.w.z. Windows -1251).

Gegroepeerde sets definiëren de reikwijdte van controlewoorden. Controlewoorden die tussen accolades staan, werken dus alleen daarbinnen en in alle onderliggende subsets. Om correct uit te rekenen welke woorden nu aanwezig zijn, moet u een stapel controlewoorden bijhouden. Wanneer u een accolade opent, maakt u een nieuw array-element in de stapel, waaraan u onmiddellijk de gegevens van de vorige laag van de stapel toevoegt. Wanneer u een accolade sluit, verwijdert u de bovenste laag.

Het is ook de moeite waard om op te merken dat sommige controlewoorden kunnen worden gesloten door een nulparameter toe te voegen in plaats van een nieuwe subgroep te maken. De volgende opties zijn bijvoorbeeld gelijkwaardig: Dit is (\b vetgedrukt) tekst , Dit is \b vetgedrukt \b0 tekst = Dit is vetgedrukt tekst.

Waar haal je de tekst vandaan?

We hebben kennis gemaakt met het apparaat van een nieuw formaat voor ons, nu zullen we ons afvragen waar we de tekst kunnen krijgen. Alles is hier niet zo ingewikkeld als het lijkt - de tekst moet worden genomen waar de huidige reeks niet als controlewoord wordt geïdentificeerd. Op een paar uitzonderingen na natuurlijk.

Ten eerste is het vermeldenswaard dat de originele codering van het rtf-bestand ANSI is, dus zonder enige opsmuk wordt alleen Engelse tekst opgeslagen. We zijn op zijn minst geïnteresseerd in Russische tekst, en nog beter in Unicode, toch? Wat waar is, is waar: rtf, hoewel een oud formaat, is geschikt om beide op te slaan.

Dus in rtf" is het mogelijk om de tweede helft van de ASCII-tabel te gebruiken, dat wil zeggen vanaf 128 en hoger. Uiteraard rekening houdend met de huidige codering (boven het controlewoord \ansicpg). Hiervoor is een reeks van de vorm \"hh werd geïntroduceerd in RTF, waarbij hh de binaire hexadecimale code is van het teken uit de ASCII-tabel.

Welnu, de tweede, interessantere optie zijn Unicode-gecodeerde gegevens. Voor hen bevat het formaat een kort en bondig trefwoord \uABCD met de digitale parameter ABCD. ABCD is in dit geval de code van een Unicode-teken in het decimale getalsysteem. Alles is weer eenvoudig, zoals je misschien hebt gemerkt.

Eenvoudig, maar niet erg goed. Er is nog een sleutelwoord in rtf, \ucN, dat nauw verwant is aan Unicode. Feit is dat het RTF-formaat zeer ijverig de compatibiliteit handhaaft met oudere apparaten waarop u dit bestand mogelijk moet openen. Als alternatief kan een dergelijk apparaat (bijvoorbeeld een computer met Windows 3.11 :) Unicode niet lezen. Wat moet het doen? Om dit te doen, kan na elk Unicode-teken dat is gecodeerd met het trefwoord \u, van nul tot meerdere tekens worden opgegeven, die moeten worden weergegeven als de rtf-viewer de huidige gegevens niet kan weergeven of parseren (volgens de documentatie, als de kijker kan de gegevens niet correct weergeven, hij moet deze overslaan).

In dit opzicht plaatsen de meeste moderne editors een vraagteken achter het Unicode-controlewoord als teken dat ze getoond willen worden in plaats van het huidige teken. Maar opties zijn ook mogelijk, bijvoorbeeld: Lab\u915GValue . Laten we ons afvragen hoeveel tekens er moeten worden weergegeven als er geen manier is om Unicode weer te geven. Nogmaals, alles is niet erg ingewikkeld - het bovenstaande trefwoord \ucN als parameter N levert deze waarde. Die. Iets als \uc1 zal zeker vóór de Unicode-gegevens verschijnen, wat ons zal vertellen dat we één teken na de Unicode moeten overslaan.

Laten we lezen!

Het lijkt erop dat de gegevens die we hebben verzameld voldoende zullen zijn om onze eerste rtf-bestanden te lezen. Laten we gaan:
  1. functie rtf_isPlainText($s) (
  2. $failAt = array ("*" , "fonttbl" , "colortbl" , "datastore" , "themedata" );
  3. voor ($i = 0; $i< count ($failAt ) ; $i ++ )
  4. if (! leeg ($s [ $failAt [$i] ]) ) retourneert false ;
  5. retourneer waar;
  6. functie rtf2text($bestandsnaam) (
  7. $text = file_get_contents($bestandsnaam);
  8. als (!strlen($text))
  9. opbrengst "" ;
  10. $document = "" ;
  11. $stapel = array ();
  12. $j = - 1;
  13. voor ($i = 0; $i< strlen ($text ) ; $i ++ ) {
  14. $c = $tekst [$i] ;
  15. schakelaar ($c) (
  16. geval " \\ " :
  17. $nc = $tekst [ $i + 1 ] ;
  18. if ($nc == "\\" && rtf_isPlainText($stack [ $j ] ) ) $document .= "\\" ;
  19. elseif ($nc == "~" && rtf_isPlainText($stack [ $j ] ) ) $document .= " " ;
  20. elseif ($nc == "_" && rtf_isPlainText($stack [ $j ] ) ) $document .= "-" ;
  21. elseif ($nc == "*" ) $stack [$j] [ "*" ] = true;
  22. elseif ($nc == """ ) (
  23. $hex = substr ($tekst, $i + 2, 2);
  24. $document .= html_entity_decode ("" . hexdec ($hex ) . ";" );
  25. $ik += 2 ;
  26. ) elseif ($nc >= "a" && $nc<= "z" || $nc >= "A" && $nc<= "Z" ) {
  27. $woord = "" ;
  28. $param = nul;
  29. voor ($k = $i + 1 , $m = 0 ; $k< strlen ($text ) ; $k ++, $m ++ ) {
  30. $nc = $tekst [$k] ;
  31. als ($nc >= "a" && $nc<= "z" || $nc >= "A" && $nc<= "Z" ) {
  32. als (leeg ($param) )
  33. $woord .= $nc ;
  34. anders
  35. pauze ;
  36. ) elseif ($nc >= "0" && $nc<= "9" )
  37. $param .= $nc ;
  38. elseif ($nc == "-" ) (
  39. als (leeg ($param) )
  40. $param .= $nc ;
  41. anders
  42. pauze ;
  43. ) anders
  44. pauze ;
  45. $i += $m - 1 ;
  46. $naarText = "" ;
  47. switch(strtolower($word)) (
  48. geval "u":
  49. $toText .= html_entity_decode ("" . dechex ($param ) . ";" );
  50. $ucDelta = @ $stack [$j] [ "uc" ] ;
  51. als ($ucDelta > 0 )
  52. $i += $ucDelta ;
  53. pauze ;
  54. case "par": case "pagina": case "kolom": case "line": case "lbr":
  55. $naarText .= " \N";
  56. pauze ;
  57. case "emspace": case "enspace": case "qmspace":
  58. $naarText .= " " ;
  59. pauze ;
  60. case "tab" : $toText .= " \T";
  61. pauze ;
  62. case "chdate" : $toText .= date ("m.d.Y" ) ;
  63. pauze ;
  64. case "chdpl" : $toText .= datum ("l, j F Y" );
  65. pauze ;
  66. case "chdpa" : $toText .= datum ("D, j M Y" );
  67. pauze ;
  68. case "chtime" : $toText .= datum ("H:i:s" ) ;
  69. pauze ;
  70. case "emdash" : $toText .= html_entity_decode ("—" );
  71. pauze ;
  72. case "endash" : $toText .= html_entity_decode ("-" );
  73. $stack [ $j] [ strtolower ($word ) ] = leeg ($param ) ? waar: $param;
  74. pauze ;
  75. if (rtf_isPlainText($stack [$j] ) )
  76. $document .= $naarTekst ;
  77. $i++;
  78. pauze ;
  79. geval "(" :
  80. array_push ($stack, $stack [$j++]) ;
  81. pauze ;
  82. geval ")" :
  83. array_pop ($stapel) ;
  84. $j--;
  85. pauze ;
  86. geval "\0" : geval "\r" : geval "\f" : geval "\n" : breuk ;
  87. case "endash" : $toText .= html_entity_decode ("-" );
  88. if (rtf_isPlainText($stack [$j] ) )
  89. $document .= $c ;
  90. pauze ;
  91. retourneer $document;
Je kunt de code met opmerkingen verkrijgen op