ID.nl logo
Python: zo bouw  je er webapplicaties mee
© Chaosamran_Studio - stock.adobe.
Huis

Python: zo bouw je er webapplicaties mee

JavaScript is de standaard programmeertaal voor webapplicaties. Maar voor liefhebbers van Python is er goed nieuws: dankzij PyScript kun je ook in je favoriete programmeertaal webapplicaties bouwen. Hierdoor krijg je toegang tot een breed scala aan populaire Python-bibliotheken. Bovendien kun je de Python-code moeiteloos communiceren met JavaScript-code.

In dit artikel gaan we dieper in op de mogelijkheden van PyScript voor het ontwikkelen van webapplicaties. Je leert:

  • Hoe je PyScript in het html-bestand verwerkt
  • Hoe je grafieken kunt plotten
  • Hoe je JavaScript als Python-code kunt laten gedragen

Lees ook deze 10-delige cursus over programmeren in Python: Zo kun je programmeren in Python - Deel 1

Code downloaden In deze workshop worden lange voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Zie het bestand code-pyscript.txt voor de stukken code die in dit artikel genoemd worden.

Webapplicaties maken doorgaans gebruik van een drie-eenheid van (programmeer)talen: HyperText Markup Language (html), Cascading Style Sheets (css) en JavaScript. Html is een opmaaktaal waarmee je de structuur en inhoud van een webpagina definieert. Met css definieer je stijlen die de vormgeving van de pagina beschrijven. En JavaScript is een programmeertaal waarmee je het gedrag van de pagina bepaalt.

Hoewel JavaScript de dominante programmeertaal is in de wereld van webapplicaties, heeft het erbuiten niet dezelfde populariteit kunnen winnen. Python daarentegen is een populaire programmeertaal in diverse domeinen, onder andere voor data-analyse, machine learning, wetenschappelijke projecten, scripting en de serverkant van webapplicaties. Hoe handig zou het zijn als je jouw kennis van Python ook in de webbrowser kunt toepassen?

1 PyScript

Dat is precies wat PyScript mogelijk maakt: Python-toepassingen ontwikkelen die in de webbrowser werken. Net zoals je JavaScript-code in een html-pagina kunt opnemen, kun je dat dankzij PyScript ook met Python-code doen. Bovendien kunnen Python- en JavaScript-objecten probleemloos met elkaar communiceren, zodat je niet gebonden bent aan PyScript, maar je Python-code kunt combineren met bestaande JavaScript-bibliotheken.

Je kunt met PyScript ook gebruikmaken van heel wat populaire Python-pakketten, zoals Beautiful Soup, Matplotlib, NumPy, Pandas of Scikit-learn. Op die manier kun je dus niet alleen je kennis van de programmeertaal Python meenemen naar je webapplicaties, maar ook die van het uitgebreide Python-ecosysteem. Als je dus vertrouwder bent met Python dan met JavaScript en je webapplicaties wilt bouwen, dan is PyScript een logische keuze.

PyScript laat je toe om webapplicaties te ontwikkelen met Python.

2 Hallo wereld

Een PyScript-webapplicatie heeft drie bestanden nodig. Eerst en vooral een html-bestand, bijvoorbeeld index.html, met de structuur van je webpagina, verwijzingen naar PyScript zelf en je eigen Python-script. Een tweede bestand beschrijft de Python-omgeving waarin je applicatie draait. Hierin geef je bijvoorbeeld aan welke extra Python-pakketten je script gebruikt. Dit bestand heet pyscript.toml of pyscript.json. Tot slot is er je Python-script zelf, dat je in een Python-bestand als main.py opslaat.

Een eenvoudig html-bestand voor een PyScript-applicatie ziet er als volgt uit:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

Je verwijst hier in het element head naar de css-stylesheet en JavaScript-code van PyScript. In het element script van de body verwijs je dan naar je Python-script.

3 Python-script

In de body van de html-pagina vind je het element button met een attribuut py-click dat de waarde "generate_text" heeft. Hiermee geef je aan dat bij een klik op die knop de Python-functie generate_text wordt aangeroepen. In het element script verwijs je vervolgens naar je Python-script main.py. Met type="py" geef je aan dat het om een Python-script gaat in plaats van een JavaScript-bestand. En met het attribuut config verwijs je naar het configuratiebestand waarin je definieert welke Python-pakketten PyScript voor je applicatie moet installeren. Als je bijvoorbeeld het pakket lorem-text wilt gebruiken, dan ziet het bestand pyscript.toml er als volgt uit:

packages = ["lorem-text"]

Het Python-script main.py heeft de volgende inhoud:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

We importeren hier dus de module lorem uit lorem-text, het pakket dat we hebben geïnstalleerd. Vervolgens importeren we ook document uit PyScript. In de functie generate_text, die wordt aangeroepen wanneer je in de webpagina op de knop klikt, krijg je via document toegang tot het volledige Document Object Model (DOM) van de webpagina. Hiermee selecteer je het element met de id output. De functie roept dan lorem.paragraph() aan om een alinea met willekeurige tekst te genereren en kent die toe aan de tekst van het geselecteerde element.

PyScript geeft je toegang tot het ecosysteem van de Python Package Index (PyPI).

Onder de motorkap Standaard draai je Python in de volledige omgeving van je besturingssysteem. Deze versie van Python, de officiële Python dus, heet CPython. Om Python in de ingeperkte omgeving van je webbrowser te laten draaien, maakt PyScript gebruik van Pyodide. Dit project is op zijn beurt gebaseerd op WebAssembly, dat een virtuele machine biedt om willekeurige software in de omgeving van je webbrowser te laten draaien. Software die voor WebAssembly is gecompileerd, heeft volledige toegang tot alle functionaliteit van je webbrowser en dezelfde web-API’s (application programming interfaces) die voor JavaScript toegankelijk zijn. Pyodide compileert CPython naar WebAssembly. Op die manier slaagt PyScript er dus in om een volwaardig alternatief voor JavaScript te bieden voor webapplicaties.

4 Webserver

Je PyScript-applicatie is nu klaar, maar je kunt het html-bestand niet gewoonweg in je webbrowser openen als een lokaal bestand. Je moet het bestand via een webserver aanbieden. Als je Python lokaal (op je computer) hebt geïnstalleerd, kun je eenvoudig de ingebouwde webserver van Python opstarten. Navigeer in een terminalvenster of opdrachtprompt naar de directory waarin je PyScript-bestanden staan en voer de volgende opdracht uit:

python -m http.server

Dit start een webserver op poort 8000 die de inhoud van de huidige directory aanbiedt. Bezoek vervolgens in je webbrowser de url http://127.0.0.1:8000/, die verwijst naar poort 8000 op je computer zelf. Je krijgt nu een webpagina te zien met als titel Hallo wereld en een knop met als label Lorem ipsum.

Wacht even tot de hele PyScript-omgeving is ingeladen. Klik dan op de knop wanneer die niet meer grijs is. Eronder verschijnt vervolgens een alinea met willekeurige tekst. Elke keer dat je op de knop drukt, verschijnt er een nieuwe tekst omdat de functie generate_text weer wordt aangeroepen.

Eén druk op de knop roept een Python-functie op die willekeurige tekst genereert.

5 Grafieken plotten

Nu kun je ook in je webapplicaties gebruikmaken van het krachtige ecosysteem van Python-pakketten voor bijvoorbeeld datavisualisatie, zoals Matplotlib. Het principe is hetzelfde als het eerste voorbeeld met de lorem ipsum-tekst: je creëert een html-bestand met de structuur van je webpagina, een bestand met de Python-pakketten die je nodig hebt, en uiteindelijk een bestand met je Python-code. Het bestand met de afhankelijkheden, pyscript.toml, vermeldt eenvoudigweg het pakket Matplotlib:

packages = ["matplotlib"]

Het html-bestand index.html ziet er als volgt uit:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

In dit voorbeeld laten we de gebruiker een amplitude en periode kiezen, om vervolgens een grafiek van de sinusfunctie met die ingestelde amplitude en periode te plotten.

Matplotlib is dé Python-bibliotheek voor visualisaties.

6 Schuifbalken

In de html-code definiëren we twee elementen input van het type range. Je webbrowser toont die als schuifbalken. We stellen voor elk element een minimum en maximum in, een stap (de waarde waarmee de schuifbalk per eenheid wordt verschoven) en een standaardwaarde. We geven beide elementen ook een label, met diezelfde standaardwaarde, zodat de gebruiker niet alleen een bolletje op een schuifbalk ziet, maar ernaast ook de waarde die daardoor wordt ingesteld.

Eronder plaatsen we dan een element div waarin de grafiek komt. We definiëren hier ook een script dat naar het Python-bestand en de configuratie met de te installeren pakketten verwijst. In de elementen input verwijzen we ook naar de in dit Python-bestand gedefinieerde functie plot_sine die wordt uitgevoerd bij elke wijziging van de invoer in het element. De webapplicatie roept de functie daardoor aan telkens als je aan de schuifbalk sleept.

7 Sinus plotten

Dan volgt uiteindelijk de code in main.py om de sinusfunctie te plotten:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

De functie plot_sine haalt allereerst de waarde op van het element met de id amplitude en wijzigt de tekst van het label voor dat element naar die waarde. Daarna doet de functie hetzelfde voor het element met de id period. Deze eerste regels code synchroniseren dus elke keer de getoonde waarde met de ingestelde waarde, zodat de gebruiker onmiddellijk feedback krijgt bij het schuiven.

Daarna creëren we met NumPy’s functie arange een reeks x-waarden en vervolgens berekenen we voor elk van die x-waarden de sinusfunctie met NumPy’s functie sin. Door het argument van de sinusfunctie te vermenigvuldigen met 2π en te delen door de periode, berekenen we de sinus met de gewenste periode: de kromme wordt zo breder of smaller geplot. Door het resultaat van de sinusfunctie met de amplitude te vermenigvuldigen, wordt de kromme hoger of lager geplot.

Uiteindelijk maken we de huidige figuur leeg, plotten we de x- en y-waardes in het blauw, voegen we een raster toe en stellen we het bereik voor de x- en y-as in. Daarna tonen we de plot in het target sine, dat verwijst naar de id van het desbetreffende element div in het html-bestand. Helemaal op het einde van het Python-bestand roepen we de functie ook expliciet op. Zo wordt de grafiek ook getoond nadat de pagina is geladen, zonder dat de gebruiker eerst met een van de schuifbalken moet schuiven.

Deze grafiek plotten we in Python dankzij Matplotlib.

8 JavaScript in Python aanroepen

Er bestaat uiteraard al een heel ecosysteem van JavaScript-bibliotheken voor webapplicaties. Je hoeft het wiel niet opnieuw uit te vinden in Python of een Python-alternatief te zoeken als je er al een in JavaScript bij de hand hebt. Zoals we eerder al schreven, biedt PyScript volledige interoperabiliteit tussen Python- en JavaScript-code in je webapplicaties. Om JavaScript-functies in je Python-code aan te roepen, importeer je de globale JavaScript-namespace met:

import js

Daarna gedraagt js zich in je Python-code als een Python-module en kun je alle globale JavaScript-functies aanroepen met js.naamvanfunctie.

Als je asynchrone JavaScript-functies wilt aanroepen, moet je ook de module asyncio in je Python-code importeren en de functies aanroepen met await ervoor.

9 Alles in één

Laten we dit eens illustreren met een eenvoudig voorbeeld dat de JavaScript Fetch API gebruikt om je publieke ip-adres via de website ipify op te vragen. We tonen meteen een alternatieve manier om PyScript te gebruiken door de Python-code rechtstreeks in het html-bestand te plaatsen in plaats van een afzonderlijk Python-bestand. Zo heeft onze webapplicatie maar één bestand nodig, het html-bestand:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

We creëren hier in de body een element py-script met daarin de Python-code. Merk op dat dit element een attribuut async heeft, omdat we in de Python-code een asynchrone functie met await aanroepen. Zonder het attribuut async zou de code niet werken.

De JavaScript Fetch API biedt een eenvoudige manier aan om http-aanroepen in je webapplicatie te doen.

10 Webpagina ophalen

De code roept de globale JavaScript-functie fetch aan met als argument de url van de API van ipify. Dit is een asynchrone JavaScript-functie, vandaar dat we die aanroepen met await js.fetch(url). Van het resultaat vragen we de tekst op. Omdat dit ook een asynchrone JavaScript-functie is, moeten we dit in onze Python-code ook met await aanroepen.

Als dit succesvol is, bevat de variabele public_ip het antwoord van de webserver van ipify, namelijk je publieke ip-adres. We creëren dan een f-string met de boodschap “Mijn publieke IP-adres:” gevolgd door het betreffende ip-adres. Met de functie display (die je niet mag vergeten te importeren uit de module pyscript) toon je deze string in het html-element waarin deze Python-code wordt uitgevoerd, namelijk het paragraaf-element p. En zo krijg je wanneer je deze webpagina laadt na een korte pauze je ip-adres te zien.

11 Python REPL

Met PyScript kun je zelfs een Python REPL (read-eval-print loop) in je webpagina toevoegen: een terminalvenster waarin je Python-opdrachten uitvoert, volledig client-side in je webbrowser. De html-code hiervoor ziet er als volgt uit:

De code kun je downloaden van deze pagina en daarna vanuit een programma als Kladblok overnemen.

De attributen terminal en worker voor het element script zijn hier belangrijk. Het eerste attribuut toont een terminal waarin de uitvoer van de Python-functie print komt, en het tweede attribuut maakt de terminal interactief (bijvoorbeeld om de gebruiker invoer te vragen met de Python-functie input).

Als je deze webapplicatie zo zou uitvoeren, zou je in de JavaScript-console een foutmelding krijgen: “Error: Unable to use SharedArrayBuffer due insecure environment.” Om je webpagina in een veilige context te plaatsen, moet je de HTTP-headers Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy en Cross-Origin-Resource-Policy instellen.

De eenvoudige ingebouwde webserver van Python die we in dit artikel gebruiken, doet dat niet. Maar als je het bestand mini-coi.js via deze GitHub-pagina downloadt en in dezelfde directory als je html-bestand opslaat, en in het element head van je html-pagina vóór alle scripts, links en styles hiernaar verwijst met <script src="./mini-coi.js" scope="./"></script>, werkt dit wel. Laad de pagina, wacht even tot de Python-omgeving is opgestart, en je kunt aan de slag in je interactieve Python-terminal.

Een volledige Python-terminal in je webapplicatie? Dat is maar enkele regels PyScript-code.

Fouten in je code oplossen Als je Python-code een syntaxisfout bevat, zal PyScript die in een rood tekstveld tonen zodra je webapplicatie de Python-code laadt. Helaas betekenen de regelnummers die je te zien krijgt niets, maar je krijgt wel de inhoud van de regel code te zien waar het misgaat. Voor niet al te grote programma’s zul je de bron van de fout wel snel vinden. Het gebruik van een code-editor voor je Python-code zal je ook al wel helpen om fouten te vinden. Het is dan ook een nadeel als je Python-code rechtstreeks in je html-bestand opneemt in een element py-script: je kunt dan niet profiteren van syntax highlighting of andere handigheidjes van een Python-ontwikkelomgeving.

Nog een tip: met de Python-functie print kun je informatie in de JavaScript-console van je webbrowser tonen, wat handig is tijdens het testen van je code.

Watch on YouTube
▼ Volgende artikel
Dit zijn dé tuinklussen om te doen in april
© Leika production
Huis

Dit zijn dé tuinklussen om te doen in april

Het heeft even geduurd, maar de winter is eindelijk (zo goed als) voorbij. De zomertijd is ingegaan, 's morgens vroeg hoor je de vogels weer en de zon zien we ook steeds vaker. Tijd dus om lekker veel buiten te zijn om je tuin helemaal zomerklaar te maken. Dit zijn de tuinklusjes die je in april allemaal kunt doen.

Dit doe je in april: 🌻 Planten afharden 🌻 Rozen, bodembedekkers en zomerbollen planten 🌻 Heggen snoeien en bemesten 🌻 Meeldauw voorkomen en bestrijden 🌻 Het gazon: maaien, bijzaaien en bemesten

📆Handig: onze tuinkluskalender voor heel het jaar rond

Planten afharden

Planten die je in de afgelopen maanden binnen hebt gehouden, kun je nu langzaam laten wennen aan de lagere buitentemperaturen. Begin in de tweede helft van april door ze overdag buiten te zetten en 's avonds weer naar binnen te halen, bijvoorbeeld in de schuur of garage. Hoewel de lente begonnen is, kunnen de nachten nog koud zijn, zeker omdat de IJsheiligen nog niet voorbij zijn. Sommige nachten kan het zelfs nog vriezen. Geef kuipplanten een meststof met langdurige werking, zodat ze voldoende voeding hebben voor de komende maanden. Bescherm eenjarige planten, jonge gewassen en bloesembomen tegen nachtvorst met een vliesdoek.

Rozen, bodembedekkers en zomerbollen planten

Heb je nog geen rozen of heesters geplant? Dan is dit het moment om dat alsnog te doen, zodat ze deze zomer in volle bloei staan. Is het lekker weer in april? Op zonnige dagen kun je ook heiligenbloem of lavendel in de grond zetten. Zorg er wel voor dat je eerst onkruid verwijdert en de bodem losmaakt.

Wil je borderplanten aanplanten? Begin dan met bodembedekkers. Dit is bovendien een ideaal moment om de beplanting een voedingsboost te geven met mest. Heb je in maart eenjarige, tweejarige of vaste planten binnen gezaaid? Dan kun je ze nu voorzichtig verpotten. Nog niet gezaaid? Dat kan nog steeds.

Vanaf half april is het ook een goed moment om zomerbollen te planten. Denk aan lelies, dahlia's, siergember, canna's en gladiolen. Bloembollen die meerdere jaren in de grond blijven, geef je extra voeding met organische mest en een laagje compost. Wil je direct meer kleur in de tuin? Zet dan bakken en potten vol met bloeiende planten. Die zijn nu volop verkrijgbaar bij tuincentra.

🧄🌷🧄🌷 De zomer(bollen) in je hoofd?

Kijk & kies

©Alexander Raths

Heggen en klimplanten

Haal de heggenschaar maar tevoorschijn, want dit is het moment om hagen zoals taxus, conifeer, liguster en leylandii te snoeien. Zo houd je ze in vorm en voorkom je dat ze te breed uitgroeien. Geef de hagen meteen een speciale haagmeststof en leg een laag bodembedekking, houtsnippers of mulch rondom de wortels. Dit helpt de grond vocht vast te houden in de zomer en verbetert de bodemstructuur. Bovendien remt het de groei van onkruid.

Dunne en dode takken in heesters kun je nu ook verwijderen. De hoofdtakken mag je flink terugsnoeien om de struik voller te laten groeien. Dit geldt ook voor winterjasmijn en forsythia, die na de bloei een snoeibeurt kunnen gebruiken. Winterbloeiende heide knip je eenvoudig terug met een heggenschaar. Vergeet niet om klimplanten, zoals clematis, goed vast te zetten. Het kan deze maand namelijk nog flink waaien.

Meeldauw voorkomen en bestrijden

Meeldauw is een plantenziekte die wordt veroorzaakt door een schimmel. Vooral bij warm en droog weer, in combinatie met vochtige nachten door dauw, kan deze ziekte zich snel verspreiden. De schimmel laat een wit, poederachtig laagje achter op de bladeren. Dit is niet alleen lelijk, maar ook schadelijk. De schimmel dringt diep door in het plantenweefsel en onttrekt voedingsstoffen, waardoor de plant minder goed groeit. Rozen, ridderspoor, kamperfoelie, begonia's, aardbeien, tomaten, komkommers, courgette en druiven zijn extra gevoelig voor meeldauw.

Om meeldauw te voorkomen is het belangrijk om bij droog weer extra water te geven en ervoor te zorgen dat er voldoende ruimte tussen de planten blijft. Aangetaste bladeren kun je het beste meteen wegknippen en in de vuilnisbak gooien, zodat de schimmel zich niet verder verspreidt. Gooi ze niet op de composthoop! Daarnaast is het verstandig om meeldauwgevoelige planten niet te plaatsen op plekken waar eerder meeldauw heeft gezeten. Mocht een plant toch helemaal onder deze schimmel zitten, dan is een bestrijdingsmiddel de beste oplossing.

©cocci65

Het gazon: maaien, bijzaaien en bemesten

Controleer of het gazon zieke of kale plekken heeft. Wil je die direct aanpakken? Steek de aangetaste plek dan in een vierkante vorm uit en leg er een nieuw, op maat gesneden grasmat in. Opnieuw inzaaien is natuurlijk ook een optie. Vanaf nu kun je het gras weer maandelijks maaien. Lang gras langs de randen werk je bij met een grastrimmer of kantenknipper, zodat het gazon er weer strak uitziet.

Bemesting is belangrijk voor een gezond gazon. Dit doe je in de periode van maart tot en met september minstens drie keer. Heb je in maart nog niet bemest? Dan is het nu de hoogste tijd. Sluit daarnaast de buitenkraan weer aan, zodat de sproeiers in de tuin klaar zijn voor gebruik.

Lees ook: Grasmaaien: fluitje van een cent met deze tips

▼ Volgende artikel
De perfecte printer kiezen? Hier moet je op letten
© jittawit.21
Huis

De perfecte printer kiezen? Hier moet je op letten

Dubbelzijdig afdrukken, navulbare inktreservoirs, automatische documentinvoer, netwerktoegang, foto’s printen, … Hedendaagse printers kennen heel wat opties. Welke functies je goed kunt gebruiken, hangt grotendeels af van je printgedrag. In dit artikel nemen we de belangrijkste eigenschappen onder de loep, waarna je een goede keuze kunt maken.

In dit artikel laten we zien hoe je de juiste printer kiest op basis van je behoeften:

  • Inkjet of laser?
  • Cardridge of inttank?
  • Welke extra functies: dubbelzijdig afdrukken, scannen en/of kopiëren, wifi-printen?

Lees ook: Printen in de cloud: wat is het en hoe werkt het?

Tip 1 Printtechniek

Het is verstandig om eerst de gewenste printtechniek te kiezen. Er zijn grofweg twee smaken, namelijk laser en inkjet. Zoals de naam al doet vermoeden, gebruikt een laserprinter een laserstraal om de juiste positie van tekst en beeld te bepalen. Dat gebeurt met een speciaal poeder dat in een zogenoemde toner is opgeslagen. Twee voordelen van deze techniek zijn de hoge afdruksnelheid en strakke drukletters. Deze apparaten zijn dan ook erg geschikt voor zakelijke gebruikers en particulieren die vaak omvangrijke documenten printen. De paginaprijs is relatief laag. Laserprinters zijn ongeschikt voor het afdrukken van foto’s en bovendien zijn ze in aanschaf doorgaans stevig aan de prijs.

Voor veruit de meeste thuisgebruikers is een inkjetprinter een logischere keuze. Dit apparaat bevat een heleboel dunne spuitmondjes die piepkleine inktdruppeltjes op het papier aanbrengen. Deze inkt is afkomstig uit cartridges of navulbare inkttanks. Het printen gebeurt uiterst nauwkeurig, waardoor er hoge resoluties haalbaar zijn. Een ander voordeel is dat een inkjetprinter felle kleuren kan afdrukken. Ideaal voor het afdrukken van mooie foto’s! Tot slot is een eenvoudig model al vanaf een paar tientjes te koop.

Een kleurenlaserprinter is doorgaans behoorlijk aan de maat, zoals dit model van Canon.

Tip 2 Inktverwerking

Besluit je om een inkjetprinter te kopen? De goedkoopste producten hebben slechts twee cartridges. Zwart zit in één inktpatroon, terwijl in de andere cartridge de kleuren magenta, geel en cyaan zijn opgeslagen. Voor doorsnee-gebruikers voldoen deze producten goed. Je kunt er foto’s en afbeeldingen in een redelijke kwaliteit mee afdrukken.

Wanneer je een hoge afdrukkwaliteit belangrijk vindt, is een inkjetprinter met vier (of meer) gescheiden cartridges een betere keuze. De eerdergenoemde kleuren hebben dan elk een eigen cartridge. Mooi meegenomen is daarnaast een zuiniger verbruik. Zodra er een bepaalde kleur op is, hoef je tenslotte alleen de overeenkomstige cartridge te vervangen.

In plaats van een inkjetprinter met cartridges kun je ook een exemplaar met zogenoemde inkttanks kopen. Hierbij heeft de behuizing meerdere reservoirs die je met speciale flesjes eigenhandig kunt vullen. Vergeleken met cartridges zijn de afdrukkosten véél lager. Een enkele flessenset is namelijk goed voor het printen van duizenden pagina’s of een heleboel foto’s. Zeker wanneer je relatief vaak afdrukt, is de meerprijs voor een inkttankprinter het overwegen waard. Het bekende merk Epson produceert op grote schaal navulbare printers. Als alternatief hebben Canon en HP ook enkele geschikte modellen.

In een flesje zit heel wat meer inkt dan in een cartridge.

Professionele fotoprinter

Wie graag fotografeert, heeft baat bij een (semi)professionele fotoprinter. Die hebben minimaal vijf cartridges of inkttanks. De extra kleur bestaat veelal uit fotozwarte inkt, waardoor de afdrukken realistischere contrasten bevatten. Een capabele fotoprinter kan namelijk een breder palet aan zwart- en grijstinten aanspreken. Dat resulteert onder meer in natuurgetrouwe schaduwen. Bepaalde producten hebben plek voor nog meer cartridges of inkttanks, al zijn dergelijke modellen wel een stuk duurder. Deze afdrukapparaten hebben een zeer hoog kleurbereik. Zeker wanneer je op een groot papierformaat wilt afdrukken, ogen de kiekjes afkomstig van zo’n uitgebreide fotoprinter levendiger. Tot slot kunnen de betere fotoprinters op A3- of zelfs A2-papierformaat afdrukken.

De dure Epson SC-P5300 is een professionele fotoprinter met maar liefst tien cartridges.

Tip 3 Kopiëren en scannen

Naast afdrukken kun je met de meeste printers ook kopiëren en scannen. Toch is het slim om dat wel even te checken. Zeker op (semi)professionele fotoprinters en laserprinters wil deze functie nog weleens ontbreken. Apparaten met een kopieer- en scanoptie hebben een deksel met een glasplaat. Leg hierop ondersteboven een document en kies op het bedieningspaneel de gewenste taak.

Je gebruikt de scanner ook om oude fotoafdrukken te digitaliseren. Hiervoor is de dpi-waarde een belangrijke eigenschap. Hoe hoger die is, hoe scherper de digitale foto (zie ook tip 5). Zeker wanneer je het kiekje wilt uitvergroten, heb je profijt van een hoge dpi.

De betere printers hebben een papierhouder voor automatische documentinvoer. Hierin passen (geregeld) maximaal vijftig vellen, waarna je de paperassen in één keer achter elkaar scant of kopieert. Dat gaat véél sneller dan elk document handmatig verwisselen op de glasplaat. Nuttig voor lange handleidingen en verslagen. Veel printers ondersteunen ook nog eens dubbelzijdig scannen en kopiëren, zodat je er helemaal geen omkijken naar hebt. Ten slotte hebben bepaalde all-in-one-printers een fax-functie, al zijn die tegenwoordig wel in de minderheid.

Gebruik een all-in-one-printer om oude fotoafdrukken te vereeuwigen.

Tip 4 Dubbelzijdig

Een goede ontwikkeling is dat je met veel betaalbare printers voor consumenten tegenwoordig ook automatisch dubbelzijdig kunt afdrukken. Deze apparaten hebben een mechanisme waarbij de printer elk A’4tje kan omdraaien. Je bespaart daarmee eenvoudig op papier. Bestaat een rapport uit pakweg vijftig pagina’s? In plaats van vijftig vellen heb je voortaan nog maar 25 A4’tjes nodig. Geef vooraf in de instellingen altijd wel even aan wanneer je dubbelzijdig wilt afdrukken. Een afdrukapparaat met deze functie wordt ook wel een duplexprinter genoemd.

Print je vaak lange documenten, dan is een zogenoemde duplexprinter een goede keuze.

Tip 5 Afdrukresolutie

Print je geregeld afbeeldingen, bijvoorbeeld illustraties of foto’s? Let dan op de afdrukresolutie. Fabrikanten drukken deze waarde uit in het aantal dots per inch (dpi). Deze eenheid staat voor het maximaal aantal druppeltjes inkt per vierkante inch. Een enkele inch heeft een oppervlakte van 2,54 × 2,54 centimeter. Hoe hoger de resolutie, hoe scherper het afdrukapparaat kan afdrukken. Foto’s ogen dan bijvoorbeeld gedetailleerder.

De goedkoopste inkjetprinters ondersteunen over het algemeen een resolutie van 4800 × 1200 dpi. In dit voorbeeld deponeren de spuitmondjes van de printer op de horizontale en verticale as respectievelijk 4800 en 1200 druppeltjes. Andere veelvoorkomende resoluties zijn 5760 × 1440 en 4800 × 2400 dpi. Bepaalde producten voor de professionele markt ondersteunen nog ruimere waarden, maar die zijn fors duurder. Houd bij zulke printers trouwens wel rekening met een hoger inktverbruik.

Voor scherpe fotoafdrukken gebruik je bij voorkeur een printer met een hoge afdrukresolutie.

Tip 6 Printer aansluiten

Zodra je de printer uit de productdoos haalt, ga je hem logischerwijs meteen aansluiten. Dat kan op verschillende manieren. Vrijwel alle producten voor de consumentenmarkt hebben een usb-ingang. Creëer daarmee een rechtstreekse verbinding tussen het afdrukapparaat en de pc of laptop.

Staat de computer uit, dan wil je misschien printjes vanaf een smartphone of tablet maken. Of misschien gebruik je in huis wel meerdere computers. Om die reden hebben de meeste hedendaagse producten een draadloze netwerkaansluiting. Verbind de printer daarmee met wifi en druk vanaf elk (mobiel) apparaat in huis af. Een voorwaarde is dat er op de beoogde plek voldoende wifi-dekking is. Je kunt dat vooraf even met een smartphone controleren. De betere producten ondersteunen de 2,4GHz- en 5GHz-frequentieband. Je vergroot daarmee de kans op een stabiele draadloze verbinding. In stedelijke gebieden is de 2,4GHz-frequentieband namelijk vaak drukbezet.

Er bestaan ook modellen met een bekabelde netwerkaansluiting, al betreffen dit hoofdzakelijk printers voor de zakelijke markt. Deze optie heeft vooral nut wanneer de printer in de buurt van een router of switch staat opgesteld. Het voordeel van zo’n fysieke netwerkaansluiting is dat printopdrachten nooit worden verstoord door het signaal van naburige draadloze netwerken.

Een printer met netwerkfunctie hoef je niet per se vlak bij een computer neer te zetten.

Tip 7 Mobiel afdrukken

De laatste jaren is het mobiel versturen van afdruktaken makkelijker dan ooit. Android-apparaten, iPhones en iPads herkennen een recente printer meestal op eigen houtje in het netwerk. Je past vervolgens naar eigen wens de printinstellingen aan en drukt direct af. Voor comptabiliteit met Apple-apparaten check je zekerheidshalve of het product AirPrint ondersteunt. In dat geval kun je bijvoorbeeld vanuit diverse apps printen, zoals Foto’s, Safari en Documenten. Open hiervoor het deelmenu (vierkant met pijl) en kies Druk af. Verder kunnen veel printers overweg met de Mopria-standaard. Je kunt dan rechtstreeks vanuit Android afdrukken.

Mocht jouw smartphone of tablet de printer niet meteen herkennen, dan is er nog geen man overboord. Open in dat geval de Play Store of de App Store en installeer de app van de printerfabrikant. Alle bekende merken hebben namelijk een eigen app, zoals HP, Epson, Brother en Canon. Vanuit deze toepassingen verstuur je alsnog printopdrachten.

Je verstuurt vanaf jouw smartphone rechtstreeks afdruktaken naar een wifi-printer.

Tip 8 Foto-opties

Fotografieliefhebbers kunnen op nog een aantal zaken letten. Heb je kiekjes met een compact-, systeem- of spiegelreflexcamera gemaakt en wil je de mooiste beelden meteen afdrukken? Sommige modellen hebben een geheugenkaartlezer. Plaats je daarin pakweg een SD-kaart, dan verschijnen de foto’s op het display van het afdrukapparaat. Afhankelijk van de printer kun je misschien nog wat zaken aanpassen. Druk de foto daarna op het gewenste papierformaat af. Dankzij deze optie hoef je de fotobestanden niet eerst naar een computer te kopiëren. Bekijk in de specificaties wel even welke geheugenkaarttypes de printer accepteert.

Als alternatief kun je een fototoestel wellicht via usb verbinden en vervolgens een afdruktaak starten. Hierbij is het een vereiste dat de camera met de PictBridge-standaard overweg kan. Selecteer op het display van de camera de gewenste instellingen en druk het kiekje af. Overigens gebruik je deze usb-poort ook om een usb-stick met documenten en foto’s aan te sluiten.

Ten slotte hebben sommige printers een apart vak voor fotopapier. Meestal kun je daarin vellen met een standaardformaat van 15 × 10 centimeter kwijt. Gunstig, want je hoeft dan de normale A4’tjes niet steeds eerst uit de printer te halen.

Haal de SD-kaart uit het fototoestel en steek hem direct in een geschikte printer.

Tip 9 Bediening

Duurdere printers hebben over het algemeen een aanraakscherm. Je tikt in het menu gewoon op de taak die je wilt uitvoeren, zoals scannen of kopiëren. Verder kun je waarschijnlijk ook diverse onderhoudsklusjes doen, zoals de printkop reinigen of firmware-updates installeren. Daarnaast controleer je op het display de actuele inktniveaus. Gebruik je een fotoprinter, dan bekijk hierop ook nog kiekjes van een aangesloten fototoestel of geheugenkaart. In dat geval is een ruim scherm wel zo prettig. Tot slot geeft het display je mogelijk toegang tot diverse (draadloze) netwerkfuncties.

Goedkopere printers hebben een klein of zelfs helemaal geen (aanraak)scherm. Op de behuizing bevinden zich dan meerdere knopjes om uiteenlopende taken te starten. Het bedieningspaneel oogt om die reden drukker. Zo zijn er meestal aparte toetsen om een zwart-wit- of kleurenkopie te maken. Opvallend veel printers hebben overigens een kantelbaar bedieningspaneel. Je kiest zo een comfortabele kijkhoek voor het scherm en de knoppen.

Deze fotoprinter van Epson onderscheidt zich met een ruime schermdiagonaal van 10,9 centimeter.

Tip 10 Behuizing

Eerlijk is eerlijk: de printer is in jouw woning of (thuis)kantoor waarschijnlijk niet het mooiste apparaat. Toch valt er op het gebied van design momenteel best wat te kiezen. Er zijn bijvoorbeeld redelijk wat printers in een zwarte én witte versie verkrijgbaar. Bovendien worden bepaalde series in allerlei vrolijke kleuren uitgebracht. Het is in dat geval wel even zoeken, want afdrukapparaten met een kleurtje liggen niet voor het oprapen.

Heb je weinig ruimte voor de printer, zoals een krap plekje in een kast of verlaten hoekje op het bureau? De kleinste inkjetmodellen zijn erg compact. Vaak kun je diverse onderdelen inklappen, waarna er een compact ‘doosje’ overblijft. Logischerwijs doe je met zo’n klein afdrukapparaat wel enkele concessies. De papierlade heeft bijvoorbeeld weinig ruimte voor A4’tjes en er ontbreekt vermoedelijk een lade voor automatische documentinvoer.

Sommige printers zijn in allerlei exotische kleuren verkrijgbaar.

Kooptips

Wil je een nieuwe printer kopen? We zetten drie breed verkrijgbare producten uit verschillende prijsklassen op een rij.

Canon Pixma TS5150

De Canon Pixma TS5150 is bij bepaalde webwinkels spotgoedkoop. Ondanks de lage aanschafprijs zijn de specificaties prima. Zo print je met dit all-in-one-model op een maximale resolutie van 4800 × 1200 dpi. Druk gerust een paginadik rapport of verslag af, want de Pixma TS5150 kan automatisch dubbelzijdig afdrukken. Wil je liever een scan of kopietje maken? Plaats dan een vel ondersteboven op de glasplaat. Je kiest met behulp van het display en de druktoetsen vervolgens de gewenste actie. De printer heeft onder de motorkap een wifi-adapter. Kortom, verstuur vanaf elk (mobiel) apparaat afdruktaken. Behalve documenten kun je net zo makkelijk foto’s uitprinten. Op een formaat van 15 × 10 centimeter zie je zelfs geen witrand. In de behuizing gaan twee cartridges. Onder de productnaam Pixma TS5151 is het product ook in een witte behuizing te koop.

HP OfficeJet Pro 9730e

Deze inkjetprinter van HP is een regelrechte alleskunner. Naast de gebruikelijke A4’tjes kun je er zelfs afdrukken op A3-formaat mee maken. Print op die manier dus posters! Zoals de naam al doet vermoeden, is de OfficeJet Pro 9730e een goede aanvulling voor elk (thuis)kantoor. Verdeeld over twee lades plaats je maar liefst vijfhonderd vellen. Verder leg je een stapeltje van 35 A4’tjes in de documentinvoer, waarna je ze achtereen kunt scannen of kopiëren. Daarnaast is automatisch dubbelzijdig afdrukken geen probleem. Mooi meegenomen is dat je met de OfficeJet Pro 9730e kiekjes kunt afdrukken, want het apparaat verwerkt moeiteloos fotopapier. De maximale printresolutie bedraagt 4800 × 1200 dpi. Er gaan vier gescheiden cartridges in de behuizing. Je koppelt deze all-in-one-printer via wifi of een kabel met het thuisnetwerk.

Epson EcoTank ET-2870

Print je veel documenten en foto’s? Dan is deze veelzijdige inkttank-printer van Epson een interessante kandidaat. Gebruik de meegeleverde flessenset om de inktreservoirs eigenhandig te vullen. Wegens het slimme flesontwerp gaat dat zonder morsen. Met een maximale resolutie van 5760 × 1440 dpi leent de EcoTank ET-2870 zich perfect voor het scherp afdrukken van foto’s. Bij het standaardformaat van 15 × 10 centimeter en kleinere fotovellen zie je hierbij geen witrand. Wanneer je het apparaat met het draadloze thuisnetwerk verbindt, kun je vanaf elke smartphone, tablet en computer afdrukken; er is hiervoor ondersteuning voor Apple AirPrint ingebakken. Naast printen kun je met dit apparaat ook kopiëren en scannen, al ontbreekt er wel een automatische documentinvoer. Let niet te veel op de hier vermelde adviesprijs, want een heleboel webwinkels vragen een lager bedrag.