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?
Sun pitää kutsua add_font ensin. set_font -dokumentaatio
Ahaa. Eli nyt pitäisi selvittää ymmärtääkseni, mikä on oikea ttf-tiedosto book antiqualle. Mitenköhän tuon saisi selville?
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.
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ä.
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ä?
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.
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')
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.
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äskylän yliopisto</h1> </body> </html>
import pdfkit pdfkit.from_url('demo.html','essee.pdf')
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.
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".
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, tietoteknisen virittelyn sijaan kannattaa vaikka jutella muiden opiskelijoiden kanssa, miten he ovat ratkaisseet ongelman tai millä tavalla arvostelussa on aiemmin suhtauduttu tekstinkäsittelyohjelmalla tuotettuun dokumenttiin.
Jaska kirjoitti:
Mietin myös seuraavaa tapaa ratkoa ongelma.
Edelleenkin, mikä ongelma?
Aihe on jo aika vanha, joten et voi enää vastata siihen.