Variantele subiectelor de bacalaureat şi principiul "less is more"
"Recapitularea" angajează şi variantele de subiecte; ne interesează conţinutul propriu-zis (nu şi antetele sau adnotările publicitare de pe fişierele PDF iniţiale) şi nu neapărat pentru a tipări, cât pentru a selecta şi extrage problemele după dorinţă. http://bacmath.docere.ro variante_bac_mate redă firesc variantele respective (prin text obişnuit, nu ca stream-uri PDF) pentru "matematică", permiţând căutarea şi selectarea după conţinut sau criteriu şi are în mod voit o exprimare simplă, dar cu suficiente valenţe ("less is more").
Reducerea la regiunea vizibilă şi "împăturirea" unor pagini PDF
Avem 300 de fişiere PDF de câte o pagină "A4"; câte 100 dintre ele reprezintă subiectul I, II şi respectiv III ale variantelor de subiecte de bacalaureat "MT1_2009".
Pentru fiecare variantă 1..100, accesăm cele trei fişiere aferente ei, reducem paginile de la formatul "A4" la regiunea vizibilă şi creem un fişier PDF care "împătureşte" cele trei pagini tocmai reduse; datorită reducerii pe verticală, vizualizatorul va arăta aceste trei pagini aproape la fel ca în cazul uneia singure.
Folosim pentru aceasta Ghostscript
(implicat într-un script Bash) şi modulul Python pyPdf
.
Modificarea unor pagini PDF, folosind python-pyPdf
Modulul pyPdf
defineşte în Python obiectele specifice formatului PDF şi pe baza acestora, instituie două obiecte principale - unul care permite parcurgerea unui fişier PDF, analizând şi interpretând conţinutul acestuia şi constituind obiectele Python corespunzătoare şi unul "invers": datele curente din obiectele Python se "traduc" şi se scriu rând pe rând ca obiecte PDF într-un fişier, menţinând pe parcurs o listă a offset-urilor la care au ajuns să fie aşezate obiectele respective - această listă servind pentru a adăuga la sfârşitul fişierului structurile tipice PDF xref
şi trailer
.
Investigăm paginile PDF iniţiale şi "scăpăm" de elementele inutile, folosind Python şi obiectele din pyPdf.
De la www.variantebacalaureat.com am obţinut trei fişiere PDF conţinând respectiv "Subiectul I", II şi III pentru cele 100 de variante de subiecte de bacalaureat la proba "matematică".
Ne interesează numai enunţurile subiectelor, încât vrem să "scăpăm" de elementele suplimentare. Dar de data aceasta, elementele "inutile" nu se rezumă la antet, notă de subsol şi punctaje "5p"; fiecare pagină din cele trei fişiere PDF iniţiale conţine în plus, "adnotări" şi un soi de "filigrane".
Cu instrumente de investigare obişnuite: head
, tail
, xxd
- depistăm în fişier obiectele PDF care determină redarea elementelor menţionate; apoi reuşim să eliminăm unele dintre ele, operând cu pyPdf
.
Trei pagini PDF în una, folosind Python
Elemente de "format PDF". Prelucrări de fişiere PDF folosind modulul Python pyPdf
şi scriptul Perl pdfcrop
.
Avem 300 de fişiere PDF - câte unul pentru fiecare "variantă" şi "subiect", cu elemente inutile (antet identic, notă de subsol, etc.) pe fiecare pagină. Obţinem 100 de fişiere conţinând pe câte o singură pagină (fără elemente inutile vizibile) subiectele respective (pentru fiecare variantă).
vezi Cărţile mele (de programare)