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:
|
'==========================================================================
'Nombre: Redactor de los meta datos del pdf
'Versión: 1.1
'Last modified: 2005-05-31
'URL del programa: http://www.arilabs.com/software/pdfmeta/pdfmeta.vbs
'Nombre de fichero: pdfmeta.vbs
'Autor: Brian alto
'Derechos reservados: Analytical Resources, Inc. (2005)
'Licencia: Versión 2 del GNU GLP (o mayor). Ver la sección de la LICENCIA abajo.
'Descripción: Permite que usted corrija título, el autor, el tema, y palabras claves.
' Es partes frontales fáciles de utilizar, pero limitadas al pdftk.
'Requiere: pdftk-1.12, ayuda de la lengua de VBScript (anfitrión de la escritura de Windows)
'==========================================================================
'============
'Instrucciones
'============
'(1) requiere esta escritura (pdfmeta.vbs) estar en la misma carpeta que pdftk.exe.
'La manera más fácil de instalar el pdftk es instalar el “constructor de PDFTK” (libre).
'http://users.on.net/~johnson/pdftkb/pdftkb_setup.exe
El 'constructor de PDFTK es partes frontales del GUI para el pdftk y tiene muchas características útiles.
' --O-- usted puede desabrochar pdftk.exe del archivo de cierre relámpago encontrado aquí:
' http://www.accesspdf.com/pdftk/ (el acoplamiento de la transferencia directa del tecleo y consigue el cierre relámpago.)
' (Lugar pdftk.exe en una carpeta apropiadamente nombrada y localizada.)
' Ver también: http://hacks.oreilly.com/pub/h/2422
'(2) lugar esta escritura (pdfmeta.vbs) en la carpeta de la instalación para
'paquete del pdftk. Hacer para atajar a pdfmeta.vbs y al lugar en su
'mesa, si usted tiene gusto.
'(3) USO: Apenas arrastrar el archivo del pdf de la fuente sobre esta escritura de VBS (o a
'atajar a él). Seguir los avisos. La carpeta temporal se abrirá
'y el nuevo pdf estará adentro. Mover el nuevo pdf a su destinación.
'====================================================================
'LICENCIA: GNU GLP v2 o mayor: http://www.gnu.org/licenses/gpl.txt
'====================================================================
'Este programa es software libre; usted puede redistribuirlo y/o modificarse
'él de conformidad con la licencia el público en general del GNU según lo publicado cerca
'Free Software Foundation; o versión 2 de la licencia, o
'(en su opción) cualquie versión posterior.
'
'Este programa se distribuye con la esperanza de que sea útil,
'pero SIN CUALQUIE GARANTÍA; sin incluso la garantía implicada de
'MERCHANTABILITY o APTITUD PARA UN PROPÓSITO PARTICULAR. Ver
'Licencia el público en general del GNU para más detalles.
Opción explícita
'Declarar las variables
Amortiguar sInfile, sFileName, sTempFile, sCurrentDir, sCurrentDrive, sScriptName
Amortiguar el sComSpec, sMeta, sTempPath, sCmd, sPdftk, sAppTitle, sTKCmd, args
'Configurar el título del uso y el nombre de fichero del comando de PDFTK
sAppTitle = “redactor v1.1 de los meta datos del pdf”
sTKCmd = “pdftk.exe”
'Para utilizar diversos campos de los meta datos, cambiar esta definición del arsenal
Amortiguar los aFields (3.1)
aFields (0.0) = “título”
aFields (1.0) = “tema”
aFields (2.0) = “autor”
aFields (3.0) = “palabras claves”
'Fijar la bandera para el “diccionario no encontrada”
Amortiguar el noDict
noDict = falso
'Definir los constantes
Const crea = verdad, DontCreate = falso
Const HideWindow = 0, ShowWindow = 1
Const ForReading = 1, ForWriting = 2, ForAppending = 3
'Rutina principal
GetArguments ()
OpenPDFFile ()
GetCurrentDirectory ()
TryToAccessPDFTK ()
GetTempFolder ()
DeleteMetaFile ()
CreateDumpDataCmd ()
WriteMetaData ()
DisplayMetaData ()
PromptForMetaData ()
WriteNewMetaData ()
WriteMetaDataIntoNewPDF ()
'Subrutinas
GetArguments secundario privado
sErr dévil, numérico, oShell
'Conseguir las discusiones y el cheque por lo menos una de la escritura (el nombre de fichero)
Fijar el oShell = WScript.CreateObject (“WScript.Shell”)
Fijar los args = WScript.Arguments
sScriptName = WScript.ScriptFullName
numérico = args. Cuenta
sErr = “uso: [cscript | wscript] pdfmeta.vbs ” y vbCRLF y _
“(Apenas arrastrar un archivo del pdf sobre esta escritura y seguir los avisos.)”
Si = 0 numérico entonces
sErr de WScript.Echo
WScript.Quit 1
Terminar si
Si InStr (UCase (args. Artículo (0)), “.PDF”) = 0 entonces
sErr de WScript.Echo
WScript.Quit 1
Terminar si
Terminar el submarino
OpenPDFFile secundario privado
sErr dévil, sFile, oFile, FSO
'Intento para abrir el fichero de entrada
Fijar FSO = WScript.CreateObject (“Scripting.FileSystemObject”)
sFile = args. Artículo (0)
el sErr = sFile y “no existe!”
Si FSO.FileExists (sFile) entonces
oFile determinado = FSO.GetFile (sFile)
sInfile = oFile.path
sFileName = oFile.name
sErr de WScript.Echo
WScript.Quit 1
Terminar si
Terminar el submarino
GetCurrentDirectory secundario privado
aCurrentPath dévil, FSO, sErr, oFile
'Conseguir el directorio actual (donde se localiza la escritura)
Fijar FSO = WScript.CreateObject (“Scripting.FileSystemObject”)
Fijar oFile = FSO.GetFile (el sScriptName)
sCurrentDir = oFile.path
el aCurrentPath = partió (sCurrentDir, “: ")
sCurrentDrive = aCurrentPath (0)
el sErr = “este programa debe residir en una impulsión local o la impulsión trazada.”
Si Len 1 (sCurrentDrive <> ) entonces
sErr de WScript.Echo
WScript.Quit 1
Terminar si
sCurrentDir = aCurrentPath (1)
sCurrentDir = mediados de (sCurrentDir, 1, Len (sCurrentDir) - Len (oFile.name))
sPdftk = sCurrentDrive y “: ” y sCurrentDir y sTKCmd
Submarino del extremo
TryToAccessPDFTK secundario privado
sErr dévil, FSO
'Intento para tener acceso al programa de pdftk.exe
Fijar FSO = WScript.CreateObject (“Scripting.FileSystemObject”)
el sErr = el sPdftk y “no existe!”
Si FSO.FileExists (sPdftk) entonces
'Pdftk.exe encontrados en directorio actual…
sErr de WScript.Echo
WScript.Quit 1
Terminar si
Terminar el submarino
GetTempFolder secundario privado
oShell dévil
'Conseguir la trayectoria de la carpeta temporal
fijar el oShell = CreateObject (“WScript.Shell”)
sTempPath = oShell.ExpandEnvironmentStrings (“%temp%")
sComSpec = oShell.ExpandEnvironmentStrings (“%comspec%")
sTempFile = sTempPath y “\” y sFileName
Submarino del extremo
DeleteMetaFile secundario privado
FSO dévil, oOrigMetaFile
'Suprimir los meta datos archivan si existe ya
sMeta = sTempPath y “\ metadata.txt”
Fijar FSO = CreateObject (“Scripting.FileSystemObject”)
Si FSO.FileExists (sMeta) entonces
oOrigMetaFile determinado = FSO.GetFile (sMeta)
oOrigMetaFile.Delete
Terminan si
Submarino del extremo
CreateDumpDataCmd secundario privado
oShell dévil
'Crear un objeto de la cáscara de comando y el pdf Info de la descarga a los meta datos archiva
sCmd = sComSpec y “""" de /d del chdir de /c y sCurrentDrive y”: “y _ del sCurrentDir
y """ y “y sTKCmd y” """ y _ sInfile y del """ del dump_data “
y “> """ y sMeta y """ 2>&1”
Fijar el oShell = WScript.CreateObject (“Wscript.Shell”)
sCmd de oShell.Run, HideWindow, verdad
Submarino del extremo
FixBrokenDictionary secundario privado
oShell dévil
'Crear nuevo pdf de comando de la cáscara de un pdf Info del objeto y del “gato”
sCmd = """" y sPdftk y """" y ““y """" y sInfile y """" y _
el “gato hecho salir” y el """" y sTempFile y el """" y “no hacen _ask”
Fijar el oShell = WScript.CreateObject (“Wscript.Shell”)
sCmd de oShell.Run, HideWindow, verdad
sCmd = sComSpec y “movimiento /y de /c” y """" y sTempFile y """" y ““y _ del """"
y sInfile y """"
Fijar el oShell = WScript.CreateObject (“Wscript.Shell”)
sCmd de oShell.Run, HideWindow, verdad
CreateDumpDataCmd ()
WriteMetaData ()
Submarino del extremo
WriteMetaData secundario privado
Dévil CON REFERENCIA A, FSO, TSO, sErr
sErr = “incapaz de reparar el diccionario del Info.”
'Leer en meta datos archivan, prueba para las expresiones,
'y valores de los meta datos del almacén
Fijar FSO = CreateObject (“Scripting.FileSystemObject”)
Si FSO.FileExists (sMeta) entonces
Fijar TSO = FSO.OpenTextFile (sMeta, ForReading, DontCreate)
Fijar CON REFERENCIA A = nuevo RegExp
Amortiguar i, sLine
Hacer mientras que no TSO.AtEndOfStream
sLine = TSO.ReadLine
RE.Pattern = “ninguÌn diccionario del Info encontró”
Si RE.Test (sLine) entonces
Si el noDict = entonces verdad
sErr de WScript.Echo
WScript.Quit 1
el noDict = verdad
'TextStreamObject cercano
TSO.Close
FixBrokenDictionary ()
Salir el submarino
Terminar si
noDict = falso
Para i = LBound (aFields) a UBound (aFields)
RE.Pattern = “InfoKey: ” y aFields (i, 0)
Si RE.Test (sLine) entonces
sLine = TSO.ReadLine
aFields (i, 1) = mediados de (sLine, 12)
Terminar si
Después
Terminar si
Lazo
'TextStreamObject cercano
TSO.Close
Terminar si
Terminar el submarino
DisplayMetaData secundario privado
Amortiguar i, msg, lengüetas, retval
el msg = “su archivo del pdf tiene las características siguientes: ” y vbCRLF y vbCRLF
Para i = LBound (aFields) a UBound (aFields)
Si Len (aFields (i, 0)) > 7 entonces lengüetas = lengüetas del vbTab = vbTab y vbTab otros
msg = msg y aFields (i, 0) y “: ” y lengüetas y aFields (i, 1) y vbCRLF
Después
msg = msg y vbCRLF y AUTORIZACIÓN del vbCRLF y “del tecleo a continuar o a cancelar parando.”
retval = msgbox (msg, vbOKCancel, sAppTitle)
Si es retval = vbCancel entonces WScript.Quit 1
Submarino del extremo
PromptForMetaData secundario privado
'Usuario pronto para los meta datos, usar meta datos en archivo original como defectos
Amortiguar i
Para i = LBound (aFields) a UBound (aFields)
aFields (i, 1) = _
InputBox (“incorporar” y los aFields (i, 0) y “: ”, sAppTitle, aFields (i, 1))
Después
Submarino del extremo
WriteNewMetaData secundario privado
FSO dévil, TSO
'Abrir un archivo de texto y escribirle los meta datos
Fijar FSO = CreateObject (“Scripting.FileSystemObject”)
Fijar TSO = FSO.OpenTextFile (el sMeta, ForWriting, crea)
Amortiguar i
Para i = LBound (aFields) a UBound (aFields)
TSO.Write “InfoKey: ” y aFields (i, 0) y vbCrLf
TSO.Write “InfoValue: ” y aFields (i, 1) y vbCrLf
Después
'TextStreamObject cercano
TSO.Close
Submarino del extremo
WriteMetaDataIntoNewPDF secundario privado
oShell dévil
'Crear una variable de secuencia de comando del pdftk del objeto y del sistema de la cáscara de comando
fijar el oShell = WScript.CreateObject (“Wscript.Shell”)
sCmd = """" y sPdftk y """" y ““y """" y sInfile y """" y _
“update_info” y """" y sMeta y """" y “salida” y _ del """"
y sTempFile y """" y “no hace el _ask”
Retval dévil
'Funcionar con el comando del pdftk y destruir las variables locales para lanzar memoria
sCmd de oShell.run, HideWindow, verdad
retval = msgbox (“buscar el archivo de salida en la carpeta temporal” y el _
“que se abrirá después.” y vbCRLF y “el archivo de salida” y _
“tendrá el mismo nombre que el archivo original. ”, _
vbOKCancel, sAppTitle)
Si es retval = vbCancel entonces WScript.Quit 1
'Explorador abierto a la carpeta del temp
oShell.run “explorador” y sTempPath, 1, verdad
Submarino del extremo
|