Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Kannattaako Pythonilla kirjoittaa raportteja?

Sivun loppuun

Jaska [24.11.2022 10:37:24]

#

Pitäisi kirjoittaa raportti, jossa on annettu tietyt speksit esim. marginaaleille, fontille, sivunumerolle yms. Tiedän, että sellaisen saa vaikkapa LibreOfficella melko helposti. Yritin kuitenkin myös Pythonilla, jotta saisin automatisoitua mahdolliset tyylin muutokset. Miten saisin fontiksi book antiquan? Tässä yritykseni:

from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.set_font('book antiqua', 'B', 16.0)
pdf.cell(ln=0, h=5.0, align='L', w=0, txt="Hello", border=0)
pdf.output('test.pdf', 'F')

Virheenä tulee:

RuntimeError: FPDF error: Undefined font: book antiqua B

Kuitenkin LibreOffice tunnistaa book antiquan samoin kuin Linux Mintin Fonts-ohjelma, joten kyseinen fontti on asennettu koneelleni.

Vai kannattaako opetella jonkun toisen kirjaston käyttö, tai kenties HTML5+CSS ja selaimessa tulostus pdf:ksi?

Grez [24.11.2022 12:15:17]

#

Sun pitää kutsua add_font ensin. set_font -dokumentaatio

Jaska [24.11.2022 12:59:03]

#

Ahaa. Eli nyt pitäisi selvittää ymmärtääkseni, mikä on oikea ttf-tiedosto book antiqualle. Mitenköhän tuon saisi selville?

peran [24.11.2022 15:17:39]

#

Kyseinen fontti näytti pystyttävän hakea googlella, kun omassa järjestelmässä ei kyseistä fonttia ollut asennettuna...

https://freefontsvault.com/book-antiqua-font-download-free/

Siellä fontin nimi on book-antiqua.ttf, kunhan ensin purkaa zip-paketin.

Edit - Jos ei halua tehdä pdf:ää, niin voi tehdä myös odf:n, jolloin dokumentin muokkaaminenkin on mahdollista (vaikka LibbreOfficella), mutta sen tekeminen aika hankala projekti.

jlaire [24.11.2022 17:13:20]

#

Jaska kirjoitti:

Vai kannattaako opetella jonkun toisen kirjaston käyttö, tai kenties HTML5+CSS ja selaimessa tulostus pdf:ksi?

Matemaatikkona osaat varmasti käyttää LaTeXia. Kiinnostaa tietää miksi harkitset sen sijaan tällaisia viritelmiä.

Metabolix [24.11.2022 18:23:59]

#

Mikä tarkalleen on se ongelma, jota yrität ratkaista? Oikein käytettynä vaikka LibreOfficella esimerkiksi marginaalin tai fontin vaihto tarvitsee tehdä vain dokumentin tyyleihin ja se toteutuu ”automaattisesti” koko dokumentissa, eli muutoksia ei tarvitse naputella sivu tai tekstikappale kerrallaan. Millä tavalla vielä automaattisempi tästä Python-ratkaisusta on tarkoitus tehdä?

Jaska [24.11.2022 18:29:57]

#

jlaire kirjoitti:

Jaska kirjoitti:

Vai kannattaako opetella jonkun toisen kirjaston käyttö, tai kenties HTML5+CSS ja selaimessa tulostus pdf:ksi?

Matemaatikkona osaat varmasti käyttää LaTeXia. Kiinnostaa tietää miksi harkitset sen sijaan tällaisia viritelmiä.

Minusta LaTeXilla kirjoittaminen on hidasta. Minulle tulee kirjoittaessa paljon varoituksia tyyliin "overfull \hbox". Yritin muuttaa kasvatustieteen esseepohjaa LaTeXille, mutta en saanut täysin samanlaista. En esimerkiksi osannut laittaa riviväliksi arvoa 1,5.

Jaska [24.11.2022 18:41:47]

#

Metabollix kirjoitti:

Millä tavalla vielä automaattisempi tästä Python-ratkaisusta on tarkoitus tehdä?

Yritin harjoituksen vuoksi tehdä skriptiä, joka tekisi yllä mainitseman kasvatustieteen esseepohjaan oman nimeni ja muokkaisi päivämäärän mukaan kansisivulle tuon Kevät-/Syyslukukausi 20XX oikeaan muotoon. Mutta vaikuttaa hankalalta. Jotain sain tehtyä:

from fpdf import FPDF

pdf = FPDF()
pdf.add_page()
pdf.set_xy(0, 0)
pdf.add_font('book antiqua', 'B',
             '/home/jaakko/Lataukset/book-antiqua.ttf', uni=True)
pdf.set_font('book antiqua', 'B', 16.0)
for i in range(27):
    pdf.cell(ln=i, h=5.0, align='C', w=0, txt="", border=0)
pdf.cell(ln=27, h=5.0, align='C', w=0, txt="Esseen otsikko", border=0)
pdf.set_font('book antiqua', '', 14.0)
pdf.cell(ln=28, h=5.0, align='C', w=0, txt="Matti Meikäläinen", border=0)
pdf.output('test.pdf', 'F')

Metabolix [24.11.2022 19:24:09]

#

Jaska kirjoitti:

Yritin harjoituksen vuoksi tehdä skriptiä, joka tekisi yllä mainitseman kasvatustieteen esseepohjaan oman nimeni ja muokkaisi päivämäärän mukaan kansisivulle tuon Kevät-/Syyslukukausi 20XX oikeaan muotoon.

Montako esseetä aiot tehdä, ja montako minuuttia kestää täyttää nämä tiedot itse? Vertailuna, montako minuuttia olet käyttänyt asian koodaamiseen jo nyt? Ihan kiva harjoitus varmaan, mutta reaalimaailmassa nämä virittelyt eivät helposti tule kustannustehokkaiksi. Eli siinä suhteessa kannattaa tehdä yksittäiset raportit ja esseet ihan tavallisilla välineillä ja säästää optimointi sellaisiin prosesseihin, jotka oikeasti toistuvat usein ja vievät merkittävästi aikaa.

Jaska [24.11.2022 23:30:08]

#

Kyllähän tuossa on aikaa mennyt. Mietin myös seuraavaa tapaa ratkoa ongelma. Jos saisin tietoon, missä kohti tuon malliesseen tekstit ovat, voisin tehdä HTML5-sivun ja kääntää sen pdf:ksi. Siis tyyliin:

<!DOCTYPE html>
<html>
<body style="margin-left: 3cm;margin-right: 3cm;margin-top:2.5cm;margin-bottom:2.5cm">

<h1 style="font-size: 16pt;margin-top:3.89in;text-align: center; font-family: book-antiqua;font-weight: 700;">Esseen otsikko</h1>
<h1 style="font-size: 14pt;font-family: book-antiqua;margin-bottom:3.06in;text-align: center;font-weight: 400;">Kirjoittaja</h1>
<h1 style="font-size: 12pt;font-family: book-antiqua;text-align: right;font-weight: 400;">KTKP010 Oppiminen ja ohjaus -opintojakson essee</h1>
<h1 style="font-size: 12pt;font-family: book-antiqua;text-align: right;font-weight: 400;">Syyslukukausi 2022</h1>
<h1 style="font-size: 12pt;font-family: book-antiqua;text-align: right;font-weight: 400;">Kasvatustieteen laitos</h1>
<h1 style="font-size: 12pt;font-family: book-antiqua;text-align: right;font-weight: 400;">Jyv&auml;skyl&auml;n yliopisto</h1>
</body>
</html>
import pdfkit
pdfkit.from_url('demo.html','essee.pdf')

mpni [24.11.2022 23:49:22]

#

Jaska kirjoitti:

(24.11.2022 23:30:08): Kyllähän tuossa on aikaa mennyt. Mietin myös...

Järkevämpi olisi varmaan käyttää aikaa itse sen esseen kirjoittamiseen. :) Marginaalit sun muut saa kyllä jälestäpäin tuunattua.

Grez [25.11.2022 08:40:44]

#

No mutta eiköhän tässä ole kyse ns. "sijaistekemisestä". Eli jos on joku juttu jota ei haluaisi tehdä, niin keksii sitten muuta mukahyödyllistä tekemistä.

Vähän niinkuin opiskelija joka yleensä ei viitsi siivota. Sitten kun pitäisi lukea tenttiin niin kämppä onkin vaihteeksi putipuhdas. Sen voi vielä perustella itselleen että "on sitten helpompi keskittyä lukemiseen".

Metabolix [25.11.2022 09:34:03]

#

Tosiasia on myös, että tekstien tarkka sijainti ei ole yleensä merkityksellinen. Kukaan ei tarkista, onko marginaalissa parin millin heitto tai onko kansilehden asettelussa vaikka sentinkin heittoja, kunhan se on silmämääräisesti suunnilleen oikean näköinen. Jos tällainen asia kovasti ahdistaa jo ennen esseen tekoa, kannattaa kohdistaa korjaukset tuolin ja pöydän väliin ja jutella vaikka muiden opiskelijoiden kanssa, miten he ovat ratkaisseet ongelman.

Jaska kirjoitti:

Mietin myös seuraavaa tapaa ratkoa ongelma.

Edelleenkin, mikä ongelma?


Sivun alkuun

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta