fites i gatells del codi font PS | FemFum CaLi2CoPi v0.037 | flags PS source code and milestones

fites i gatells del codi font PS | FemFum CaLi2CoPi v0.037 | flags PS source code and milestones


 %# GNU GPL FemFum CaLi2CoPi v.037 és una llibreria d'anālisi de PDF per verificar,
 %# modificar i reescriure Portable Document Format per mitjā del llenguatge PostScript.
 %# Per a intčrprets GNU GPL Ghostscript perō també, amb ben pocs retocs, pot cōrrer
 %# amb l'Adobe Acrobat Distiller (fins hi tot l'OSX PSNormalizer Framework).
 %#
 %# Copyright (c) 2000-2011 :: l'Ametlla de Merola :: Marc Antoni Malagarriga i Picas
 %# <http://www.femfum.com> | <marcantoni@femfum.com>
 %# http://femfumcali2copi.sourceforge.net/
 %# http://projectes.lafarga.cat/projects/femfumcali2copi/
 %#
 %# Aquest programa és programari lliure: podeu redistribuir-lo i/o modificar-lo
 %# sota els termes de la Llicčncia Pública General de GNU publicada per la Free
 %# Software Foundation, ja sigui la versiķ 3 de la Llicčncia, o (a la seva elecciķ)
 %# qualsevol versiķ posterior.
 %#
 %# Aquest programa es distribueix amb l'esperanįa que sigui útil, perō SENSE CAP GARANTIA;
 %# ni tan sols la garantia implícita MERCANTIL o d'APTITUD PER A UN OBJECTIU PARTICULAR.
 %# Consulteu els detalls de la Llicčncia Pública General de GNU per a més informaciķ.
 %#
 %# Haurieu de rebre una cōpia de la Llicčncia Pública General de GNU junt amb aquest
 %# programa. En cas contrari, consulteu <http://www.gnu.org/licenses/>
 %#
 %#
 %# GNU GPL FemFum CaLi2CoPi v0.037 is a PDF parser library to preflight,
 %# modify and rewrite the Portable Document Format under PostScript language.
 %# For GNU GPL Ghostscript interpreter, but also available with minor changes
 %# for Adobe Acrobat Distiller (even for MacOSX PSNormalizer Framework).
 %#
 %# Copyright (c) 2000-2011 :: l'Ametlla de Merola :: Marc Antoni Malagarriga i Picas
 %# <http://www.femfum.com> | <marcantoni@femfum.com>
 %# http://femfumcali2copi.sourceforge.net/
 %# http://projectes.lafarga.cat/projects/femfumcali2copi/
 %#
 %# This program is free software: you can redistribute it and/or modify
 %# it under the terms of the GNU General Public License as published by
 %# the Free Software Foundation, either version 3 of the License, or
 %# (at your option) any later version.
 %#
 %# This program is distributed in the hope that it will be useful,
 %# but WITHOUT ANY WARRANTY; without even the implied warranty of
 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 %# GNU General Public License for more details.
 %#
 %# You should have received a copy of the GNU General Public License
 %# along with this program. If not, see <http://www.gnu.org/licenses/>

 %#% execuciķ amb GS per línia de comandes
 %# gs -q -dNOSAFER -o re.pdf -sDEVICE=pdfwrite -c .setpdfwrite -f FemFum_CaLi2CoPi_037.ps

 %#%00% Normes d'escriptura a seguir dins el codi per a una gestiķ de codiPSnetiplanxat_html.ps
 %# i fitesigatellsPSnetiplanxat_html.ps i per una bona traducciķ a Google Translator:
 %# 1. Els comentaris normals (gris) han de tenir només 2 o 3 % seguits ... mai 1 de sol % !
 %# 2. El millor es que tots els comentaris normals en tinguin 2 %% doncs si acabem la línia amb uns
 %# punts suspensius ... la traducciķ elimina el % inicial (i amb 1 d sol ja no seria un comentari!)
 %# 3. Cal separar amb un espai a l'acabar i comenįar, quan escrivim tres punts suspensius ...
 %# 4. Els comentaris amb interrograciķ, el signe ? final ha d'anar enganxat a la darrera paraula
 %# 5. El contingut d'un comentari que NO volem que es tradueixi, ho posarem entre els carācters d'accent grave i acute ...
 %# obrim no traduīr: ascii 96 = grave = U+0060 (Unicode Basic Latin | CE)
 %# tanquem no traduīr: ascii 180 = acute = U+00B4 (Unicode Latin-1 Supplement | CE)
 %# aquests dos signes dins el fitxer html desparareixen
 %# 6. Els comentaris que sķn fites (vermell) s'han d'escriure com segueix, quan els iniciem:
 %# %#%01% aixō és una fita on l'identificador numčric 01 va entre %01% i s'inicia amb %#
 %# les línies addicionals d'una fita comencen amb: %# seguit d'un espai en blanc!
 %# perō si volem forįar una línia en blanc per dalt quan fem un llistat amb la utilitat
 %# fitesigatellsPSnetiplanxat_html.ps posem: %#% seguit d'un espai en blanc i el que vulguem!
 %# 7. Els comentaris que sķn gatells (blau), s'obren i tanquen, i la seva sintaxi és:
 %# %:00 aixō és el gatell 00 que obre
 %# %/00 aixō és el gatell 00 que tanca
 %# 8. Pel codi PS (negre) no hi ha cap mena de restricciķ
 %# 9. Errors en aquesta sintaxi poden produir falles d'execuciķ a les dues aplicacions de repicat:
 %# fitesigatellsPSnetiplanxat_html.ps i codiPSnetiplanxat_html.ps

 %#%%%% OPCIONS DE MENÚ

 %#%01% dades de capįalera (opcions de menú)

 %#% A path i nom del PDF a tractar %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 %#% B path + tram del nom del nou PDF reescrit i tractat segons l'opciķ escollida %%%%%%%%%%%%%

 %#% C marques de tall i reescriptura idem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# Si a %#% G triem 0, llegirem aquest dígit per decidir si unifiquem els
 %# <Stream Contents> o els deixem intactes en cas que estiguin trencats (variable xQuinaArea)
 %# 0= Unifiquem els <Stream Contents> 1= Ho deixem intacte
 %# Si a %#% G triem 2, llegirem aquest dígit per triar l'ārea on posarem les
 %# Creus de Tall, si no, el valor d'aquest apartat és indiferent (variable xQuinaArea)
 %# 0= MediaBox 1= CropBox 2= TrimBox
 %# Si a %#% G triem 6, llegirem aquest dígit per saber si de la interfície d'a3copiseny ens ve
 %# el pocessat d'un sol fitxer =0 o el processat d'un directori sencer =1 (ho necessita el .log)

 %#% D extrau o reinsereix imatges JPEG %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# path del directori on hi hagin les imatges a exportar (~9) o a reinserir (~7)

 %#% E anālisi textual i etiqueta text %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# Llargāries mínima (NO pot ser mai zero!) i māxima dels mots sospitosos a ser analitzats

 %#% path i nom del fitxer dels rengs de text fruit de l'anālisi de sortida (es llegeix o s'escriu)

 %#% posem les etiquetes transparents en una lleixa NO imprimible? true:SI false:NO

 %#% missatge tipus Tooltip, Sticky Note o Post-It per als fitxers no localitzats a la base de dades

 %#% #11 torsimany: preparem el fitxer TXT de l'anālisi de sortida pels traductors en línia?

 %#% F dada variable %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# De com preparar la plantilla del PDF per la dada variable:
 %# Cal generar el PDF amb les tipografies incrustades i amb el 100% del joc de carācters
 %# Cal marcar el text per ordre que haurā de ser tractat com a dada variable fent, amb dos mčtodes possibles (#a, #b i comú # sense lletra):
 %# 0. Obrir el fitxer PDF que ha de servir de plantilla de la dada variable.
 %# 0a. Desplegar el menú View>Navigation Tabs>Content.
 %# 1a. Desplegar per l'arbre de pestanyes d'aquest menú flotant, fins arribar a localitzar el text que ens interessa marcar com a dada variable. Si la unitat de text que hem de marcar és més petita que la que ens mostra aquest arbre de continguts, no podrem marcar el text per aquest mčtode #a i hauremn de seguir per les instruccions #b.
 %# 2a. Cliquem sobre el text que actua com a una unitat de dada variable prement el botķ de la dreta del ratolí o CTRL+clic per escollir 'Create Artifact'.
 %# 3a. Podem acceptar, prement 'OK', el que surti per defecte en aquest menú.
 %# 4a. Tornem a clicar sobre el mateix text i premem novament el botķ de la dreta del ratolí o CTRL+clic per escollir 'Properties' i anem a la solapa 'Content'.
 %# 5a. Omplim el camp 'Container Tag' amb un nom personalitzat, on el text no ha de tenir espais en blanc, ni carācters fora de l'ascii, podent jugar amb majúscules i minúscules. Aquest etiquetarā l'element de dada variable dins l'array /aDADAv (patrķ de les claus per cada línia de dada variable llegida).
 %# 6a. Premem el tabulador per assegurar la dada i sortim amb 'close' o matant la finestra.
 %# 7a. Pôdem estar segurs que ho hem fet bé si el nostre nom personalitzat apareix entre < ... > dins el desplegable.
 %# 1b. Tanquem el menú flotant del 'Content' i escollim l'eina 'TouchUp Text Tool'.
 %# 2b. Seleccionar el text que actua com a una unitat de dada variable.
 %# 3b. Prémer el botķ de la dreta del ratolí o CTRL+clic per escollir 'Create Artifact'.
 %# 4b. Podem acceptar, prement 'OK', el que surti per defecte en aquest menú.
 %# 5b. Tornem a seleccionar el mateix text i premem novament el botķ de la dreta del ratolí o CTRL+clic per escollir 'Properties' i anem a la solapa 'Content'.
 %# 6b. Omplim el camp 'Container Tag' amb un nom personalitzat, on el text no ha de tenir espais en blanc, ni carācters fora de l'ascii, podent jugar amb majúscules i minúscules. Aquest etiquetarā l'element de dada variable dins l'array /aDADAv (patrķ de les claus per cada línia de dada variable llegida).
 %# 7b. Premem el tabulador per assegurar la dada i sortim amb 'close' o matant la finestra.
 %# 1. Un cop etiquetats tots els textos, podem desar el PDF millor fent un 'Save As'.
 %# Consideracions:
 %# 1. ara no distingim tipus de dades variables (numčrics, text, lōgics, dates, etc)
 %# 2. donem per fet que el fitxer TXT duu només dades útils com a text entre dobles cometes " ... " si no fos així hauríem de posar el carācter anellador com un parāmetre més de capįalera
 %# 3. també a %#%42bis3% podríem personalitzar la dada única per reescriure el nom del PDF perō ara hi ha un simple numerador (NMrDR) per simplificar aquest tema
 %# 4. el TXT de dada variable si acaba amb linies en blanc generarā fitxers idem al darrer registre
 %# 5?. donem per fet que el xifrat de la tipografia que conté la dada variable és WinAnsi?doncs fins que no ho analitzem inicialment ho haurem de comprovar manualment
 %# 6?. donem per fet que el joc de carācters de la tipografia de conté la dada variable és complet doncs fins que no ho analitzem inicialment ho haurem de comprovar manualment
 %# 7. sempre ens quedarā el recurs d'utilitzar una de les 14 core fonts (a implementar més endavant) per treballar amb més portabilitat (i evitar xifrats esotčrics o jocs restringits), o també tindriem la possibilitat d'incrustar en aquest procés una font lliure.
 %# path del fitxer de lectura de dada variable
 %# array pel patrķ dels noms clau per cada línia (registre) de dada variable llegida
 %# string amb el carācter separador dels camps de dades a les línies de dada variable

 %#% Fbis generaciķ de l'arbre jerārquic i numeraciķ de pāgines %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# array dels nivells jerārquics de l'índex
 %# generem l'índex amb bookmarks?
 %# generem l'índex amb pāgines?
 %# numerem les pāgines?
 %# fins a quina jerarquia despleguem la visibilitat inicial dels bookmarks?

 %#% G triem Que Li Fem Fer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %# quč li fem fer ?
 %# 0 :: XRay+ reescriptura idem del PDF perō amb un seguit de canvis interns (fet!)
 %# 1 :: XRay+ separaciķ de tintes amb tants PDF com tintes hi hagi (només per a PDF d'1 sola pāgina) (fet!)
 %# 2 :: XRay+ marques de tall automātiques fent créixer el format de pāgina (MediaBox) si cal (fet!)
 %# 3 :: XRay+ corrector tipogrāfic de la Ela Geminada (per fer)
 %# 4 :: XRay+ anālisi textual amb generaciķ de rengsDtext.TXT per #08 sense fer el repicat a PDF (fet!)
 %# 5 :: XRay+ dada variable (fet!)
 %# 6 :: XRay+ cosit d'imatges trencades que s'hagin localitzat (fet! perō queden coses per polir encara)
 %# 7 :: XRay+ reinsereix imatges JPEG segons l'ordre com s'hagin exportat amb Acrobat o amb l'opcio #9 (fet! perō queden coses per polir encara)
 %# 8 :: XRay+ etiqueta text afegint vincles i marques transparents segons les dades de #4 (JBC)
 %# 9 :: XRay+ extrau imatges JPEG segons convencions (escales de gris + RGB, no ICC, no Indexat) a JPEG ... NO FA el repicat a PDF ... (fet! pero cal polir coses encara)
 %# 10 :: XRay+ preflight amb capes (verificador per al Colˇlegi de Disseny Grāfic: capes x material digital per anar + enllā d'XRay (ho estem fent)
 %# 11 :: XRay+ traducciķ (ho estem fent) ...en realitat és una determinada combinaciķ de 4+8
 %# 12 :: XRay+ generaciķ automātica d'índex amb bookmarks i pāgines (Polynorma)

 %#% H path + inici del nom del fitxer TXT informatiu XRay %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 %#% J path de treball dels fitxers temporals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 %#% fi de dades de capįalera (opcions de menú) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 %#%02% paquet de missatges BaBeL
 %# estratčgia per concentrar tots els missatges impresos i escrits indexats en una array
 %# indexant també en una array superior els diversos idiomes
 %# activem l'idioma desitjat amb un simple índex

 %#%03% captura de dades de capįalera

 %:07 REINSEREIX IMATGES JPEG
 %/07 REINSEREIX IMATGES JPEG

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:04 ANĀLISI TEXTUAL

 %:05 dada variable

 %:08 ETIQUETA TEXT

 %:12 arbre jerārquic
 %/12 arbre jerārquic
 %/08 ETIQUETA TEXT
 %/05 dada variable
 %/04 ANĀLISI TEXTUAL
 %/03 CORRECTOR TIPOGRĀFIC

 %#%04% Detecta intčrprets Distiller i Ghostscript (o desconeguts) i n'avalua la versiķ

 %#%05% estratčgia més efectiva per saber el separador que utilitza l'intčrpret
 %# per tal de definir tots els fitxers temporals de treball que necessitem
 %# i d'alguna manera saber en quin OS treballem: (:) Mac clāssic o (/) Win/Linux/Unix
 %# per tal de generar tots els path de treball temporal a disc

 %#%06% %%%DLL%%% Atenciķ: aixō no li agrada a la DLL i al comprimir-lo (Flate) cal treure-ho!!!

 %#%08% aquí llistem x la pantalla el nom del PDF que explorem ...

 %#%09% aquí posem un detector de si compleix la convenciķ dels 1024 del cap i la cua
 %# i un detector de brossa del PDF (si la trobem, de moment descartem aquests fitxers i deixem x més endavant la creaciķ d'un netejador)

 %#%10% trillador de PDF per superar la limitaciķ 65535 famosa
 %# de passada podem saber d'antuvi de quants objectes disposa

 %#%11% Nou algorisme que reescriu un diccionari, basat en espiadic_fura2.ps
 %# per tal de no tenir problemes amb els diccionaris recursius (per més que n'hi hagin!)

 %#%12% Nou algorisme que reescriu una array, basat en epfadict.ps
 %# igual que espiapaq_fura2 pot fer tota mena d'arrays recursius (per més que n'hi hagin!)

 %#%13% aquí comenįa el nucli original de comdimoni

 %#%14% anālisi per validar el PDF
 %# primer, mirem si el PDF és encriptat
 %# segon, mirem si el PDF estā signat digitalment
 %# tercer, ara NO tenim en compte la versiķ de PDF i mirem sempre si pot tenir la
 %# supercompressiķ d'Object Streams activada, doncs la funciķ d'optimitzar de l'A6
 %# permet tenir pdf antics amb la 'compress document structure' posada
 %# llavors també hi ha PDF liniaritzats que també la duen (vegeu PDFReference16.pdf)
 %# i petaven degut a que la supercompressiķ no es comprobava abans
 %# quart, detectem si el PDF estā liniaritzat (Fast Web View ~ ús del byteoffset )
 %# cinquč, analitzem a fons la versiķ comparant el valor del cap del PDF
 %# amb una possible entrada /Version al /Root de l'xref + nova

 %#%14bis% esborrem de COMdimoni l'objecte Metadata a donar de baixa +InfoVell (en cas que sigui una ref ind) i els objectes que duen el valor Length dels streams

 %#%15% definim una variable pel final de línia EOL, així podrem variar-la quan interessi

 %#%16% loop recursiu entre diccionaris x eliminar duplicats d'objectes

 %#%17% generem el diccionari XRay per tal de desar les dades d'anālisi del PDF
 %# tant per l'escriptura del TXT com per consultes a fer en determinats moments
 %# modificarem progressivament aquests continguts xq quedin endreįats a cada pāgina

 %#%18% capturem ara el /Root + nou

 %#%19% desem l'arbre de pāgines del document dins el diccionari quinaPlana
 %# escrivim l'arbre de pāgines de forma ordenada per la seva numeraciķ

 %:01 SEPARACIĶ DE TINTES

 %#%19bis0% detector de si hi ha més d'1 pāgina per la separaciķ de colors
 %/01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %#%19bis2% definim un format de pāgina per defecte (ara A4 vertical)

 %#%19bis3% reescrivim les dades de les ārees de treball a l'XRay
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:07 REINSEREIX IMATGES JPEG

 %#%19bis4% mirem si hi ha jpegs al directori d'exportaciķ, els validem i n'emmagatzemem els path i les dades que necessitem
 %# cadascun dins un paquet docJpeg on desem pāgina a pāgina en arrays d'imatges, on l'índex ens descriu l'ordre d'exportaciķ
 %/07 REINSEREIX IMATGES JPEG

 %:09 EXTRAU IMATGES JPEG

 %#%19bis5% preparem XRay per acollir l'exportaciķ d'imatges
 %/09 EXTRAU IMATGES JPEG

 %#%20% definim el fitxer on reescriurem els Contents x 1er cop

 %:03 CORRECTOR TIPOGRĀFIC

 %:04 ANĀLISI TEXTUAL

 %:05 dada variable

 %:08 ETIQUETA TEXT

 %:12 arbre jerārquic

 %#%20bis% mōdul d'anālisi i extracciķ de text

 %#%20bis2% de cada tipografia deduim el width+mig (la mitja de tots) x desar-lo a l'índex 4 de l'array de CalaixDeTipus
 %/12 arbre jerārquic
 %/08 ETIQUETA TEXT
 %/05 dada variable
 %/04 ANĀLISI TEXTUAL
 %/03 CORRECTOR TIPOGRĀFIC

 %#%21% diccionari per replicar de forma idčntica els Contents (OpContents_QueLiFemFer1)

 %#%21bis% activem els valors d'índex corresponents a QueLiFemFer

 %#%21bis2% diccionari on desarem els paquets amb les 4 coordenades de posicio de totes les imatges

 %#%22% procediments de replicat idčntic dels Contents (sense comprimir) dins un fitxer

 %:02 MARQUES DE TALL

 %#%22bis2% dibuix de la creu de tall: aquesta és quadrada amb 4 braįos de 30 punts (60x60) de .25 p de gruix a trams de blanc i negre que tapen
 %/02 MARQUES DE TALL

 %:06 COSIT D'IMATGES

 %#%22bis3% diccionari on desarem les ref ind de les imatges considerades frontisa (o isolades normals o claus d'un mosaic)
 %/06 COSIT D'IMATGES

 %:10 PREFLIGHT AMB CAPES

 %#%22bis4% definim el flag VectorViu i l'array de materials digitals amb els noms interns/externs de les llesques (layers) i si han estat detectats
 %/10 PREFLIGHT AMB CAPES

 %:08 ETIQUETA TEXT

 %#%22bis5% definim l'array de noms interns/externs la llesca de vincles transparents
 %/08 ETIQUETA TEXT

 %:05 dada variable

 %#%22bis6% definim el diccionari on hi haura la clau del núm de pāgina i de valor un diccionari on la clau serā nomDADAclau i el valor el nom PDF de la tipografia, per muntar el diccionari tipusDADAv haurem de fer una redefiniciķ dels operadors Tf BDC EMC i Tj TJ ' "
 %# gatell per controlar l'activat d'operadors amb funcions de dada variable
 %/05 dada variable

 %#%23% repiquem els Contents a partir del diccionari decodificador OpContents_QueLiFemFer1

 %:04 ANĀLISI TEXTUAL

 %:12 arbre jerārquic
 %/12 arbre jerārquic
 %/04 ANĀLISI TEXTUAL

 %:02 MARQUES DE TALL

 %#%23bis% extraiem les dades del TrimBox per traslladar l'orígen de l'eix de coordenades i pintar les creus
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT

 %:12 arbre jerārquic
 %/08 ETIQUETA TEXT

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT
 %/08 ETIQUETA TEXT

 %:12 arbre jerārquic

 %:02 MARQUES DE TALL

 %#%23bis% extraiem les dades del TrimBox per traslladar l'orígen de l'eix de coordenades i pintar les creus
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT

 %:12 arbre jerārquic
 %/08 ETIQUETA TEXT

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT
 %/08 ETIQUETA TEXT

 %:12 arbre jerārquic

 %:02 MARQUES DE TALL

 %#%23bis% extraiem les dades del TrimBox per traslladar l'orígen de l'eix de coordenades i pintar les creus
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT

 %:12 arbre jerārquic
 %/08 ETIQUETA TEXT

 %:02 MARQUES DE TALL
 %/02 MARQUES DE TALL

 %:08 ETIQUETA TEXT
 %/08 ETIQUETA TEXT

 %:12 arbre jerārquic

 %:01 SEPARACIĶ DE TINTES

 %#%23bis2% si fem la separaciķ de colors, sortim per que no té continguts
 %/01 SEPARACIĶ DE TINTES

 %:00 REESCRIPTURA IDEM

 %#%23bis53% aquí és on unificarem els Contents en 1 sol stream
 %/00 REESCRIPTURA IDEM

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:04 ANĀLISI TEXTUAL

 %:05 dada variable

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:09 EXTRAU IMATGES JPEG

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%23bis3% reincrustem els streams reinterpretats, als seus corresponents objectes
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/09 EXTRAU IMATGES JPEG
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/05 dada variable
 %/04 ANĀLISI TEXTUAL
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:06 COSIT D'IMATGES

 %#%23bis4% algorisme muntador del trencaclosques
 %/06 COSIT D'IMATGES

 %:06 COSIT D'IMATGES

 %#%24% anālisi de si hi ha trencaclosques d'imatges ...
 %/06 COSIT D'IMATGES

 %#%25% exploraciķ de les Layers del document

 %:08 ETIQUETA TEXT
 %/08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %#%25bis% desem el diccionari del Catalog més nou, actualitzem a 1.5 si s'escau, i activem l'obertura de PDF amb solapa de Layers
 %/10 PREFLIGHT AMB CAPES

 %:08 ETIQUETA TEXT

 %#%25bis2% desem el diccionari del Catalog més nou, actualitzem a 1.5 si s'escau
 %/08 ETIQUETA TEXT

 %#%26% ara anem a pescar els Resources de cada plana per localitzar /XObject

 %:01 SEPARACIĶ DE TINTES

 %#%26bis% sortim, doncs ara no tractem els plomes a les separacions de color
 %/01 SEPARACIĶ DE TINTES

 %:08 ETIQUETA TEXT

 %#%26bis1% ja hem tractat abans aquest PDF amb el gatell #8?
 %/08 ETIQUETA TEXT

 %#%26bis2% sortim si no hi ha XObjects ?

 %:07 REINSEREIX IMATGES JPEG
 %/07 REINSEREIX IMATGES JPEG

 %#%27% filtrat d'arrays directes d'espai de color als XObjects

 %#%27bis% Exploraciķ dels Form XObject donats d'alta

 %:10 PREFLIGHT AMB CAPES

 %#%27bis2% reescriurem o redefinirem l'stream del FormXObject reinterpretat, a string o a fitxer, amb les llesques (Layers) posades
 %/10 PREFLIGHT AMB CAPES

 %:07 REINSEREIX IMATGES JPEG

 %#%27bis3% aquí és on comprovem l'absčncia definitiva d'imatges XObject
 %/07 REINSEREIX IMATGES JPEG

 %#%28% Exploraciķ dels Patterns i els Shadings del document

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %#%28bis0% aquí explorem els Shadings ...

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %#%28bis2% dins els nous Resources particulars dels Patterns esbrinem si hi ha /Shading

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%28bis% error no controlat en la separaciķ de colors dels Patterns i Shadings
 %/01 SEPARACIĶ DE TINTES

 %#%28bis3% definim el fitxer on reescriurem l'stream del Pattern

 %#%28bis4% farcim l'array totalRSRCS amb els diccionaris directes dels Resources dels Patterns&Shadings

 %#%29% Exploraciķ dels Estats Grāfics del document

 %#%30% explorem els Espais de Color del document

 %#%30bis% posem l'espai de color que toca a l'array del Pattern

 %#%31% Exploraciķ dels XObjects del document

 %#%31bis% afegim els noms dels FormXObject al dicicionari Paleta de l'espai de color corresponent
 %# i afegim també els noms com a valors de l'array TanX100

 %:07 REINSEREIX IMATGES JPEG

 %#%31bis2% modificaciķ dels diccionaris XObject, pāgina a pāgina, sobre el mapa ordenat d'imatges cridades per Do a l'stream de Contents
 %/07 REINSEREIX IMATGES JPEG

 %#%32% Valors inicials per l'anālisi complementari dels Espais de Color per saber ...
 %# 1. si hi ha CS amb valor zero de tinta (i quins sķn) i si aquest valor és sol o no
 %# 2. si hi ha CS PureCMYK

 %#%33% descabdellem totes les Tintes diferents i els seus valors perceptuals

 %#%33bis% forall per desar dins tots els noms diferents (TiV) tots els seus valors perceptuals diferents

 %#%33bis2% ara tractem l'entrada /All si hi és ...

 %#%33bis3% pentinem l'existčncia d'alguna de les Tintes /Cyan/Magenta/Yellow/Black (Process Colors)
 %# doncs en el cas que n'hi hagi alguna de creada, All (pel que sembla) forįa la creaciķ de la resta, per dipositar-hi també els seus valors

 %#%33bis4% Tintes que només existeixen com a /Separation i que cal donar d'alta per l'acciķ de /All? (ara se'm presenta el dubte de que si no existís All també hauríem d'actuar així o no)
 %# per solucionar el cas 21_8034.pdf
 %# com que All actúa, mirem si existeix algun color a /Separacions que no haguem donat d'alta a TiV (ni a EspaisDeColor?)

 %#%33bis4bis% degut a que les imatges (XObject+inLine) descrites amb DeviceGray les donem d'alta com si fossin CMYK, activem
 %# un filtre per eliminar de TiV totes les imatges (XObject+inLine) DeviceGray que estiguin referenciades fora de Black
 %# doncs si no es produiria un error en el procés de separaciķ de colors %43

 %#%33bis5% eliminem qualsevol Tinta que només dugui valor zero

 %#%34% escriptura del fitxer XRay (segona part)

 %#%35% filtrat d'errades a XRay per determinar quč fem ...

 %:09 EXTRAU IMATGES JPEG

 %#%35bis% mōdul exportador d'imatges a RGB pur
 %/09 EXTRAU IMATGES JPEG

 %:12 arbre jerārquic

 %:04 ANĀLISI TEXTUAL
 %/04 ANĀLISI TEXTUAL
 %/12 arbre jerārquic

 %:12 arbre jerārquic
 %/12 arbre jerārquic

 %:04 ANĀLISI TEXTUAL

 %#%35bis1% repiquem el mapa d'exportaciķ de vincles al txt, segons convencions ...
 %/04 ANĀLISI TEXTUAL

 %:01 SEPARACIĶ DE TINTES

 %#%35bis2% aquí decidirem si fem el repicat del PDF, sempre que NO fem l'opciķ 9 o 4

 %#%36% analitzem a fons tots els estats grāfics per controlar l'Overprint i preparar-nos a fer els Previews

 %#%37% Analitzem ara el diccionari especial csZero dels Espais de Color per saber ...
 %# 1. si hi ha CS amb valor zero de tinta o no
 %# 2. si el valor de color zero es únic o no
 %# 3. si és DeviceN o PureCMYK
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %#%38% inici del depurador de l'estructura de Layers
 %# aquest depurador cal tenir en compte que només actua sobre unes determinades entrades (/OCProperties /Properties /D)
 %# doncs per desactivar l'estructura ja es suficient, perō donada la complexitat d'aquest apartat les anirem incorporant
 %# progressivament com a profilaxi de continguts inútils a mida que ens faci falta

 %#%38bis% esborrem de COMdimoni els objectes indirectes depurats al desmuntar l'estructura de Layers
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %:05 dada variable

 %#%39% clonarem els diccionaris trencats del PDF per ComDimoni per poder reescriure cada vegada
 %# el PDF de sortida amb les mateixes condicions
 %/05 dada variable
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%40% segon diccionari de repicat de Contents (versiķ revisada fins la 1.7)

 %#%40bis% activem els valors d'índex corresponents a QueLiFemFer
 %# per activar la corresponent redefiniciķ de cada operador
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/01 SEPARACIĶ DE TINTES

 %:01 SEPARACIĶ DE TINTES

 %#%41% separem Patterns&Shadings

 %#%42% fem la separaciķ de colors de totes les imatges

 %#%42bis% esborrem a cada tinta de FotoCrom els noms de les imatges que ja hem donat de baixa d'JectesXclon

 %#%42bis2% generem un paquet per renombrar parcialment el(s) PDF(s) i afegir al Subject
 %# segons la quantitat de fitxers PDF que haguem de reescriure (opcions 01 i 05)
 %# on si fem (01) separarem les tintes per un determinat ordre ...
 %# ... de moment ens interessa ordenar primer les tintes que duen Shadings pel davant
 %# de les que no en duen, doncs aixķ afecta a l'estabilitat de modificaciķ dels diccionaris
 %# dels Shadings, funcions de tipus 3 i tipus 2. Parāmetres com ColorSpace, C0/C1 i Range
 %# es veuen afectats per l'odre en que se'n modifica el contingut
 %/01 SEPARACIĶ DE TINTES

 %:05 dada variable

 %#%42bis3% bastim /TNTSxORDRE amb tots els noms únics per reescriure els PDF de dada variable
 %# i generem el paquet DADAmestre amb tots els continguts de dada variable per reincrustar
 %# índex per llegir l'array DADAmestre contenint una array de dades per fitxer a reescriure
 %/05 dada variable

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%43% reescriptura de fitxers
 %# separaciķ de tintes: un PDF de sortida per a cada una de les Tintes
 %# dada variable: un PDF de sortida per cada registre de dada variable
 %# la resta d'opcions només generen un sol fitxer de sortida
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %#%43bis% hi ha alguna imatge? (XObject o inLine), doncs en aquest punt és on n'hem de modificar
 %# el diccionari /Filter /XIU /Decode[0 1] /Length i /ColorSpace per activar la seva separaciķ

 %#%43bis2% aquí és on modificarem l'stream dels dics dels Patterns&Shadings x separar la Tinta que llistem
 %/01 SEPARACIĶ DE TINTES

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%44% filtrem el nom de: el PDF a reescriure o la Tinta a separar
 %/01 SEPARACIĶ DE TINTES

 %#%45% posem el farcidor de _ per als carācters indesitjables

 %#%46% redefiniciķ dels path i els índex pel repicat dels nous streams

 %#%47% tanquem fitxers per profilaxi (és necessari?)

 %#%48% donem de baixa l'única entrada que no és un objecte
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %#%48bis# aquí donem de baixa l'entrada /Range a uns objectes, que si hi sķn, no hi havia manera d'esborrar-la abans
 %/01 SEPARACIĶ DE TINTES

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%49% busquem el número del darrer objecte actiu (QuiEsAra) i del primer (elPrimer)

 %#%49bis% tractem el Subject + Title + Author + Creator + CreationDate/ModDate de l'Info ...

 %#%49bis2% definim el contingut del Subject del DocInfo
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%49bis3% generem o redefinim PieceInfo per segellar l'ús de CaLi2CoPi
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:05 dada variable
 %/05 dada variable

 %:12 arbre jerārquic
 %/12 arbre jerārquic

 %:01 SEPARACIĶ DE TINTES

 %#%50% definim el fitxer on reescriurem els Contents repicats aplicant el tractament a través de les redefinicions d'OpContents_QueLiFemFer#

 %#%51% procediments de replicat idčntic dels Contents (sense comprimir) dins un fitxer

 %#%51bis% procediment de replicat idčntic de l'stream de Contents dels Form XObject (sense comprimir) dins un fitxer

 %#%52% reinterpretem els Contents unificats en un sol fitxer per fer-li el tractament
 %/01 SEPARACIĶ DE TINTES

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%52bis.5.0% gatell per controlar l'activat d'operadors amb funcions de dada variable

 %#%52bis.6.0% inicialitzem novament el valor de l'array dels diccionaris de /EstatGrafic

 %#%52bis.6.1% definim el fitxer on reescriurem els Contents repicats aplicant el tractament a traves de les redefinicions d'OpContents_QueLiFemFer#

 %#%52bis.6.2% procediments de replicat idčntic dels Contents (sense comprimir) dins un fitxer
 %/10 PREFLIGHT AMB CAPES

 %#%52bis.6.3% generem el diccionari KaMPoRa amb totes les imatges d'una mateixa pāgina a eliminar

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %:12 arbre jerārquic

 %:12 arbre jerārquic

 %:12 arbre jerārquic

 %:12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES

 %#%52bis.6.4% algorisme culcosit

 %:10 PREFLIGHT AMB CAPES
 %/06 COSIT D'IMATGES

 %#%52bis.6.5% aquí repicarem els streams dels Forms recursius
 %# atenciķ que a 52.bis tindríem l'oportunitat de repicar x tercer cop els streams dels Forms (ara només si fem 1)
 %# repiquem l'stream de cada Form per primer o segon cop (semblant a %23)

 %:06 COSIT D'IMATGES

 %:05 dada variable
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/06 COSIT D'IMATGES
 %/05 dada variable

 %:01 SEPARACIĶ DE TINTES

 %#%52bis% reescriurem l'stream del Form XObject repicat aplicant el tractament a través de les redefinicions d'OpContents_QueLiFemFer#

 %#%53% aquí és on unificarem els Contents en un sol stream
 %/01 SEPARACIĶ DE TINTES

 %:10 PREFLIGHT AMB CAPES

 %:08 ETIQUETA TEXT

 %#%53bis% incrustem l'estructura de llesques (layers) per la verificaciķ
 %/10 ETIQUETA TEXT

 %:10 ETIQUETA TEXT
 %/08 ETIQUETA TEXT

 %:08 ETIQUETA TEXT
 %/10 ETIQUETA TEXT

 %:10 ETIQUETA TEXT
 %/08 ETIQUETA TEXT
 %/10 PREFLIGHT AMB CAPES

 %:08 ETIQUETA TEXT

 %#%53bis2% generem l'estat grāfic pels objectes transparents i tot el seu mapa de vincles
 %/08 ETIQUETA TEXT

 %:08 ETIQUETA TEXT

 %#%53bis3% ... com en el cas del projecte JBC, és la DLL qui controla el nom i el path del fitxer de sortida
 %/08 ETIQUETA TEXT

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%54% fitxer on reconstruirem el PDF

 %#%55% aquí s'inicia la reescriptura del PDF

 %#%56% just abans podríem donar d'alta als nous objectes
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:05 dada variable

 %#%57% restaurem els diccionaris trencats de ComDimoni a partir del clōnic
 %/05 dada variable
 %/01 SEPARACIĶ DE TINTES

 %:00 REESCRIPTURA IDEM

 %:01 SEPARACIĶ DE TINTES

 %:02 MARQUES DE TALL

 %:03 CORRECTOR TIPOGRĀFIC

 %:05 dada variable

 %:06 COSIT D'IMATGES

 %:07 REINSEREIX IMATGES JPEG

 %:08 ETIQUETA TEXT

 %:10 PREFLIGHT AMB CAPES

 %:12 arbre jerārquic

 %#%58% hem canviat l'estratčgia i esborrarem els temporals al principi
 %# ara només informarem que hi queden temporals (demanarem a la DLL que acabi de netejar si cal)

 %#%59% fitxer TXT de control final del resultat pel web+PHP
 %/12 arbre jerārquic
 %/10 PREFLIGHT AMB CAPES
 %/08 ETIQUETA TEXT
 %/07 REINSEREIX IMATGES JPEG
 %/06 COSIT D'IMATGES
 %/05 dada variable
 %/03 CORRECTOR TIPOGRĀFIC
 %/02 MARQUES DE TALL
 %/01 SEPARACIĶ DE TINTES
 %/00 REESCRIPTURA IDEM