1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
|
'==========================================================================
'Nome: Redattore di meta dati del pdf
'Versione: 1.1
'Last modified: 2005-05-31
'URL di programma: http://www.arilabs.com/software/pdfmeta/pdfmeta.vbs
'Nome di schedario: pdfmeta.vbs
'Autore: Brian alto
'Copyright: Analytical Resources, Inc. (2005)
'Autorizzazione: Versioni 2 di GNU GPL (o maggior). Vedere la sezione dell'AUTORIZZAZIONE qui sotto.
'Descrizione: Permette che pubblichiate il titolo, l'autore, l'oggetto e le parole chiavi.
' È una parte frontale di facile impiego, ma limitata a pdftk.
'Richiede: pdftk-1.12, supporto di lingua di VBScript (ospite dello scritto di Windows)
'==========================================================================
'============
'Istruzioni
'============
'(1) richiede questo scritto (pdfmeta.vbs) di essere nello stesso dispositivo di piegatura di pdftk.exe.
'Il senso più facile installare il pdftk è di installare “il costruttore di PDFTK„ (libero).
'http://users.on.net/~johnson/pdftkb/pdftkb_setup.exe
'Il costruttore di PDFTK è una parte frontale del GUI per pdftk ed ha molte caratteristiche utili.
' --O-- potete aprire la chiusura lampo di pdftk.exe dalla lima di chiusura lampo trovata qui:
' http://www.accesspdf.com/pdftk/ (il collegamento di trasferimento dal sistema centrale verso i satelliti di scatto ed ottiene la chiusura lampo.)
' (Posto pdftk.exe in un dispositivo di piegatura giustamente chiamato ed individuato.)
' Vedere inoltre: http://hacks.oreilly.com/pub/h/2422
'(2) posto questo scritto (pdfmeta.vbs) nel dispositivo di piegatura dell'installazione per
'pacchetto del pdftk. Rendere per raccorciare a pdfmeta.vbs ed al posto sul vostro
'tavolo, se gradite.
'(3) USO: Trascinare appena la lima del pdf di fonte su questo scritto di VBS (o sulla a
'raccorciare ad esso). Seguire i richiami. Il dispositivo di piegatura provvisorio si aprirà
'ed il nuovo pdf sarà all'interno. Spostare il nuovo pdf verso la relativa destinazione.
'====================================================================
'AUTORIZZAZIONE: GNU GPL v2 o maggior: http://www.gnu.org/licenses/gpl.txt
'====================================================================
'Questo programma è software libero; potete ridistribuirli e/o modificare
'esso ai sensi dell'autorizzazione del grande pubblico di GNU come pubblicata vicino
'Free Software Foundation; o versione 2 dell'autorizzazione, o
'(alla vostra opzione) qualsiasi versione successiva.
'
'Questo programma si distribuisce nella speranza che sarà utile,
'ma SENZA QUALSIASI GARANZIA; senza persino la garanzia implicita di
'MERCHANTABILITY o FORMA FISICA PER UNO SCOPO PRECISO. Vedere
'Autorizzazione del grande pubblico di GNU per più particolari.
Opzione esplicita
'Dichiarare le variabili
Oscurare sInfile, lo sFileName, sTempFile, lo sCurrentDir, sCurrentDrive, sScriptName
Oscurare lo sComSpec, lo sMeta, lo sTempPath, lo sCmd, lo sPdftk, il sAppTitle, lo sTKCmd, args
'Configurare il titolo di applicazione ed il nome di schedario dell'ordine di PDFTK
sAppTitle = “redattore v1.1 di meta dati del pdf„
sTKCmd = “pdftk.exe„
'Per usare i campi differenti di meta dati, cambiare questa definizione di allineamento
Oscurare i aFields (3.1)
aFields (0.0) = “titolo„
aFields (1.0) = “oggetto„
aFields (2.0) = “autore„
aFields (3.0) = “parole chiavi„
'Regolare la bandierina per “il dizionario non trovata„
Oscurare il noDict
noDict = falso
'Definire le costanti
Const genera = allinea, DontCreate = falso
Const HideWindow = 0, ShowWindow = 1
Const ForReading = 1, ForWriting = 2, ForAppending = 3
'Procedura principale
GetArguments ()
OpenPDFFile ()
GetCurrentDirectory ()
TryToAccessPDFTK ()
GetTempFolder ()
DeleteMetaFile ()
CreateDumpDataCmd ()
WriteMetaData ()
DisplayMetaData ()
PromptForMetaData ()
WriteNewMetaData ()
WriteMetaDataIntoNewPDF ()
'Sottoprogrammi
GetArguments secondario riservato
sErr fioco, numerico, oShell
'Ottenere le discussioni ed il controllo dello scritto per almeno uno (il nome di schedario)
Regolare il oShell = WScript.CreateObject (“WScript.Shell„)
Regolare i args = WScript.Arguments
sScriptName = WScript.ScriptFullName
numerico = args. Conteggio
sErr = “uso: [cscript | wscript] pdfmeta.vbs „ & vbCRLF & _
“(Appena trascinare una lima del pdf su questo scritto e seguire i richiami.)„
Se = 0 numerico allora
sErr di WScript.Echo
WScript.Quit 1
Concluder se
Se InStr (UCase (args. Articolo (0)), “.PDF„) = 0 allora
sErr di WScript.Echo
WScript.Quit 1
Concluder se
Concludere il sommergibile
OpenPDFFile secondario riservato
sErr fioco, sFile, oFile, FSO
'Prova per aprire l'archivio di entrata
Regolar FSO = WScript.CreateObject (“Scripting.FileSystemObject„)
sFile = args. Articolo (0)
il sErr = sFile & “non esiste!„
Se FSO.FileExists (sFile) allora
oFile stabilito = FSO.GetFile (sFile)
sInfile = oFile.path
sFileName = oFile.name
Altrimenti
sErr di WScript.Echo
WScript.Quit 1
Concluder se
Concludere il sommergibile
GetCurrentDirectory secondario riservato
aCurrentPath fioco, FSO, sErr, oFile
'Ottenere l'indice corrente (dove lo scritto è individuato)
Regolar FSO = WScript.CreateObject (“Scripting.FileSystemObject„)
Regolar oFile = FSO.GetFile (sScriptName)
sCurrentDir = oFile.path
il aCurrentPath = ha spaccato (sCurrentDir, “: ")
sCurrentDrive = aCurrentPath (0)
il sErr = “questo programma deve risedere su un azionamento locale o su un azionamento tracciato.„
Se Len 1 (sCurrentDrive <> ) allora
sErr di WScript.Echo
WScript.Quit 1
Concluder se
sCurrentDir = aCurrentPath (1)
sCurrentDir = metà di (sCurrentDir, 1, Len (sCurrentDir) - Len (oFile.name))
sPdftk = sCurrentDrive & “: „ & sCurrentDir & sTKCmd
Sommergibile dell'estremità
TryToAccessPDFTK secondario riservato
sErr fioco, FSO
'Prova per accedere al programma di pdftk.exe
Regolar FSO = WScript.CreateObject (“Scripting.FileSystemObject„)
il sErr = lo sPdftk & “non esiste!„
Se FSO.FileExists (sPdftk) allora
'Pdftk.exe trovati nell'indice corrente…
Altrimenti
sErr di WScript.Echo
WScript.Quit 1
Concluder se
Concludere il sommergibile
GetTempFolder secondario riservato
oShell fioco
'Ottenere il percorso del dispositivo di piegatura provvisorio
regolare il oShell = CreateObject (“WScript.Shell„)
sTempPath = oShell.ExpandEnvironmentStrings (“%temp%")
sComSpec = oShell.ExpandEnvironmentStrings (“%comspec%")
sTempFile = sTempPath & “\„ & sFileName
Sommergibile dell'estremità
DeleteMetaFile secondario riservato
FSO fioco, oOrigMetaFile
'Cancellare i meta dati archivano se già esiste
sMeta = sTempPath & “\ metadata.txt„
Regolar FSO = CreateObject (“Scripting.FileSystemObject„)
Se FSO.FileExists (sMeta) allora
oOrigMetaFile stabilito = FSO.GetFile (sMeta)
oOrigMetaFile.Delete
Si concludono se
Sommergibile dell'estremità
CreateDumpDataCmd secondario riservato
oShell fioco
'Generare un oggetto delle coperture di ordine ed il pdf Info del deposito ai meta dati archiva
sCmd = sComSpec & “""" di /d del chdir di /c & sCurrentDrive &„: “& _ dello sCurrentDir
& """ & “& sTKCmd &„ """ & _ del """ & sInfile di dump_data “
& “> """ & sMeta & """ 2>&1„
Regolare il oShell = WScript.CreateObject (“Wscript.Shell„)
sCmd di oShell.Run, HideWindow, allineare
Sommergibile dell'estremità
FixBrokenDictionary secondario riservato
oShell fioco
'Generare nuovo pdf di ordine delle coperture del pdf Info dell'oggetto e “del gatto„
sCmd = """" & sPdftk & """" & ““& """" & sInfile & """" & _
“il gatto prodotto„ & il """" & sTempFile & il """" & “non fanno _ask„
Regolare il oShell = WScript.CreateObject (“Wscript.Shell„)
sCmd di oShell.Run, HideWindow, allineare
sCmd = sComSpec & “movimento /y di /c„ & """" & sTempFile & """" & ““& _ del """"
& sInfile & """"
Regolare il oShell = WScript.CreateObject (“Wscript.Shell„)
sCmd di oShell.Run, HideWindow, allineare
CreateDumpDataCmd ()
WriteMetaData ()
Sommergibile dell'estremità
WriteMetaData secondario riservato
Fioco CON RIFERIMENTO A, FSO, TSO, sErr
sErr = “incapace di riparare il dizionario di Info.„
'Leggere dai meta dati archivano, prova per le espressioni,
'e valori di meta dati del deposito
Regolar FSO = CreateObject (“Scripting.FileSystemObject„)
Se FSO.FileExists (sMeta) allora
Regolar TSO = FSO.OpenTextFile (sMeta, ForReading, DontCreate)
Regolar CON RIFERIMENTO A = nuovo RegExp
Oscurare la i, sLine
Fare mentre non TSO.AtEndOfStream
sLine = TSO.ReadLine
RE.Pattern = “nessun dizionario di Info ha trovato„
Se RE.Test (sLine) allora
Se il noDict = allora allinea
sErr di WScript.Echo
WScript.Quit 1
Altrimenti
il noDict = allinea
'TextStreamObject vicino
TSO.Close
FixBrokenDictionary ()
Uscire il sommergibile
Concluder se
Altrimenti
noDict = falso
Per i = LBound (aFields) a UBound (aFields)
RE.Pattern = “InfoKey: „ & aFields (i, 0)
Se RE.Test (sLine) allora
sLine = TSO.ReadLine
aFields (i, 1) = metà di (sLine, 12)
Concluder se
Dopo
Concluder se
Ciclo
'TextStreamObject vicino
TSO.Close
Concluder se
Concludere il sommergibile
DisplayMetaData secondario riservato
Oscurare la i, il msg, linguette, retval
il msg = “la vostra lima del pdf ha le seguenti proprietà: „ & vbCRLF & vbCRLF
Per i = LBound (aFields) a UBound (aFields)
Se Len (aFields (i, 0)) > 7 allora linguette = linguette del vbTab = vbTab & vbTab altri
msg = msg & aFields (i, 0) & “: „ & linguette & aFields (i, 1) & vbCRLF
Dopo
msg = msg & vbCRLF & APPROVAZIONE di scatto “& del vbCRLF da continuare o annullare a rinunciare.„
retval = msgbox (msg, vbOKCancel, sAppTitle)
Se retval = vbCancel allora WScript.Quit 1
Sommergibile dell'estremità
PromptForMetaData secondario riservato
'Utente rapido per i meta dati, using i meta dati in lima originale come difetti
Oscurare la i
Per i = LBound (aFields) a UBound (aFields)
aFields (i, 1) = _
InputBox (“entrare„ & nei aFields (i, 0) & “: „, sAppTitle, aFields (i, 1))
Dopo
Sommergibile dell'estremità
WriteNewMetaData secondario riservato
FSO fioco, TSO
'Aprire una lima di testo e scrivere i meta dati esso
Regolar FSO = CreateObject (“Scripting.FileSystemObject„)
Regolar TSO = FSO.OpenTextFile (sMeta, ForWriting, genera)
Oscurare la i
Per i = LBound (aFields) a UBound (aFields)
TSO.Write “InfoKey: „ & aFields (i, 0) & vbCrLf
TSO.Write “InfoValue: „ & aFields (i, 1) & vbCrLf
Dopo
'TextStreamObject vicino
TSO.Close
Sommergibile dell'estremità
WriteMetaDataIntoNewPDF secondario riservato
oShell fioco
'Generare una variabile di stringa di ordine del pdftk dell'oggetto e dell'insieme delle coperture di ordine
regolare il oShell = WScript.CreateObject (“Wscript.Shell„)
sCmd = """" & sPdftk & """" & ““& """" & sInfile & """" & _
“update_info„ & """" & sMeta & """" & “uscita„ & _ del """"
& sTempFile & """" & “non fa il _ask„
Retval fioco
'Fare funzionare l'ordine del pdftk e distruggere le variabili locali per liberare la memoria
sCmd di oShell.run, HideWindow, allineare
retval = msgbox (“cercare l'archivio di uscita nel dispositivo di piegatura provvisorio„ & nel _
“che si aprirà dopo.„ & vbCRLF & “l'archivio di uscita„ & _
“avrà lo stesso nome della lima originale. „, _
vbOKCancel, sAppTitle)
Se retval = vbCancel allora WScript.Quit 1
'Esploratore aperto al dispositivo di piegatura del temp
oShell.run “esploratore„ & sTempPath, 1, allineare
Sommergibile dell'estremità
|