Last chance! 50% off DataCamp Premium
Sale ends in
PDF is een Portable Document Format met tekst, afbeeldingen, grafieken, enzovoort, en verschilt daarmee van platte-tekstbestanden. Het is een bestand met de extensie '.pdf' en is uitgevonden door Adobe. Dit type bestand is onafhankelijk van platformen zoals software, hardware en besturingssystemen.
Je moet een pakket installeren met de naam "pypdf2" dat bestanden met de extensie '.pdf' kan verwerken. 
Je ziet hieronder dat het pakket 'pypdf2' is geïnstalleerd. 
Je haalt alleen de tekst uit het pdf-bestand, omdat PyPDF2 beperkingen heeft bij het extraheren van rijke mediacontent. Logo's, afbeeldingen, enz. kunnen er niet uit worden gehaald — download het volgende pdf-bestand om met deze tutorial te werken.
Pdf-bestand downloaden

De 'import'-instructie in de bovenstaande code haalt de PyPDF2-module op. Je gebruikt 'open('pdfBestandsnaam' , 'openingsModus')' waarbij de 'pdfBestandsnaam' 'test.pdf' is en de 'openingsModus' 'rb' is, wat betekent: alleen lezen in binair formaat.

PyPDF2 heeft een methode 'PdfFileReader', die het zojuist gemaakte object 'pdfFileObject' meekrijgt. Je kunt nu de eigenschap 'numPages' van 'pdfFileObject' gebruiken, die het totale aantal pagina's geeft.
De bovenstaande output is 1. Je ziet dat het pdf-bestand slechts één pagina heeft.
Je kunt de methode 'getPage(0)' in 'pdfReaderObject' gebruiken om de eerste pagina op te halen. Het resultaat wordt vervolgens opgeslagen in 'firstPageObject', waarna alle tekst op die specifieke pagina kan worden afgedrukt met de methode 'extractText()'.
De bovenstaande code geeft alle tekst uit het pdf-bestand. De afbeelding wordt echter niet in de terminal weergegeven; dat is niet mogelijk met pyPDF2.
Je gaat twee verschillende pdf-bestanden samenvoegen tot één pdf-bestand. Het oude PDF-bestand is het bestand waarmee je eerder hebt gewerkt; een nieuw PDF-bestand kun je downloaden via de volgende link:
Nieuw PDF-bestand.

Je importeert de module PdfFileMerger uit het PyPDF2-pakket, die helpt om pdf-bestanden samen te voegen. Het 'pad' wordt opgegeven; dit geeft de maplocatie aan waar het bestand staat. Ook de samen te voegen pdf-bestanden worden in een lijst in 'pdf_files' opgenomen.
Je ziet dat het merger-object is gemaakt met 'PdfFileMerger'. Er wordt geloopt over elk bestand in de lijst, waarbij het samenvoegen gebeurt door het pad en bestand door te geven aan de 'append'-methode. Tot slot verkrijg je de uiteindelijke output met 'merger.write()', waarmee de samengevoegde inhoud onder een nieuwe PDF-bestandsnaam wordt weggeschreven.
De bovenstaande afbeelding toont 'merged.pdf', dat bestaat uit de samengevoegde inhoud van 'test.pdf' en 'test-1.pdf'.
Word-documenten hebben de extensie ".docx" aan het einde van de bestandsnaam. Deze documenten bevatten niet alleen tekst zoals platte-tekstbestanden, maar zijn rich-textdocumenten. Een rich-textdocument bevat verschillende structuren voor het document, zoals grootte, uitlijning, kleur, afbeeldingen, lettertype, enz.
Je hebt een applicatie nodig om met Word-documenten te werken. De bekende applicatie voor Windows- en Mac-besturingssystemen is Microsoft Word, maar dat is een betaald abonnement. Er is echter een gratis alternatief zoals "LibreOffice", een applicatie in Linux die vaak vooraf is geïnstalleerd. De applicaties kunnen worden gedownload voor Windows- en Mac-besturingssystemen. In deze tutorial gebruiken we Microsoft Word op Windows.
Je moet een pakket installeren met de naam "python-docx" dat Word-documenten met de extensie '.docx' kan verwerken. 
Je ziet hieronder dat het pakket 'python-docx' is geïnstalleerd. 
Je kunt meekoden in de interactieve shell van Python, maar het is aan te raden een teksteditor te gebruiken. Voor het codeerwerk in deze tutorial gebruiken we daarom Sublime Text.

Je ziet hierboven dat in de eerste regel de module 'document' uit het pakket 'docx' wordt geïmporteerd. De code op de tweede regel maakt een nieuw Word-document via het Document-object. De bestandsnaam wordt opgeslagen als 'first.docx' met 'document.save()'.

De bovenstaande code bevat 'Document()' om een nieuw bestand te openen en 'document.save('addHeader.docx')' om een nieuw bewerkt docx-bestand te maken. Je kunt een kop toevoegen met de methode 'add_heading('tekst', level=getal)', die de tekst als kop neemt en het kopniveau van 0 tot en met 4.

De bovenstaande code levert een nieuw bestand 'addedHeader.docx' op, waarbij niveau 0 een kop is met een horizontale lijn onder de tekst, terwijl kopniveau 1 de hoofdkop is. Op dezelfde manier zijn de andere koppen subkoppen met afnemende lettergroottes.

De bovenstaande code bevat 'Document()' om een nieuw document te openen en 'document.save('addParagraph.docx')' om een nieuw bewerkt docx-bestand te maken. Je kunt een alinea toevoegen met de methode 'add_paragraph('tekst', style='vereiste_stijl')', die de tekst accepteert; 'style' is een optioneel argument, waarbij je 'List Number' en 'List Bullet' kunt gebruiken.

De bovenstaande code levert een nieuw bestand 'addedParagraph.docx' op, met eerst een eenvoudige alinea. Daarna staat er een kop, en daaronder een geordende lijst met de items 1 en 2. Daaronder staat nog een kop met twee items in een ongeordende lijst met opsommingstekens.

De bovenstaande code bevat 'Document()', waarmee een nieuw document wordt gemaakt, en 'document.save('addPicture.docx')' om een nieuw bewerkt docx-bestand te maken. Je kunt de afbeelding toevoegen met 'add_picture()', waarbij de eerste parameter 'cat-1.jpeg' het pad naar de kattenafbeelding is. Breedte en hoogte zijn optionele parameters die standaard '72 dp' zijn, maar we hebben 'Inches' gebruikt voor ons doel.

De bovenstaande code levert een nieuw bestand 'addedPicture.docx' op, dat een kattenafbeelding bevat met een breedte en hoogte van 1,25 inch.
Je gaat nu een voorbeeld-Word-document lezen met Python; je vindt het hier:
Voorbeeld downloaden.

De eerste regel in de code importeert 'Document' uit de 'docx'-module, die wordt gebruikt om het vereiste documentbestand door te geven en een object te maken. 'obtainText' is een functie die het bestand 'fullText.docx' ontvangt. Er wordt geloopt over elke alinea, toegankelijk via 'document.paragraphs', en die wordt met de methode 'append' aan een lege lijst toegevoegd. Uiteindelijk retourneert de functie een lijst met alinea's, elk eindigend met een nieuwe regel.

De bovenstaande output geeft de platte tekst zonder stijl, kleur, enz.; het is geen rich-textdocument.
Gefeliciteerd, je bent klaar met deze tutorial.
Wil je meer leren over data importeren in Python? Volg dan DataCamp's cursus Introduction to Importing Data in Python.
Bekijk ook onze Python Data Structures Tutorial.
Je kunt ook de volgende bronnen bekijken om je kennis over specifieke onderwerpen te verdiepen.
Referenties:
Automate Boring Stuff With Python: Working with Word Documents
Leer meer over Python
Cursus
Cursus
Cursus

blog
Adel Nehme
15 min