-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocx2pdf.vbs
More file actions
253 lines (249 loc) · 5.95 KB
/
docx2pdf.vbs
File metadata and controls
253 lines (249 loc) · 5.95 KB
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
' Êîäèðîâêà äàííîãî ôàéëà äîëæíà áûòü Windows-1251
Option Explicit
Const PDF = 17
Const fTitle = "ÐÀÑÏÈÑÀÍÈÅ ÇÀÍßÒÈÉ "
Const cTitle = " ÊËÀÑÑÀ ÍÀ "
Const tGboy = "ÃÁÎÓ ÑÎØ ï. Êîìñîìîëüñêèé ì. ð. Êèíåëüñêèé Ñàìàðñêîé îáë."
Const assetsFolder = "assets/files/0000/do/"
Const assetsType = "rs"
Dim docTitle
Dim objWord
Dim objDocument
Dim strSourceFolder
Dim objFSO
Dim objFile
Dim customProp
Dim prop
Dim fCount
Dim csvFile
Dim csvText
Dim rsDate
' Ôóíêöèÿ òðàíñëèòà
Function Rus2Lat(strRus)
Dim i
Dim strTemp
Dim strLat
For i = 1 To Len(strRus)
strTemp = Mid(strRus, i, 1)
Select Case strTemp
Case "à"
strLat = strLat & "a"
Case "À"
strLat = strLat & "a"
Case "á"
strLat = strLat & "b"
Case "Á"
strLat = strLat & "b"
Case "â"
strLat = strLat & "v"
Case "Â"
strLat = strLat & "v"
Case "ã"
strLat = strLat & "g"
Case "Ã"
strLat = strLat & "g"
Case "ä"
strLat = strLat & "d"
Case "Ä"
strLat = strLat & "d"
Case "å"
strLat = strLat & "e"
Case "Å"
strLat = strLat & "e"
Case "¸"
strLat = strLat & "e"
Case "¨"
strLat = strLat & "e"
Case "æ"
strLat = strLat & "zh"
Case "Æ"
strLat = strLat & "zh"
Case "ç"
strLat = strLat & "z"
Case "Ç"
strLat = strLat & "z"
Case "è"
strLat = strLat & "i"
Case "È"
strLat = strLat & "i"
Case "é"
strLat = strLat & "i"
Case "É"
strLat = strLat & "i"
Case "ê"
strLat = strLat & "k"
Case "Ê"
strLat = strLat & "k"
Case "ë"
strLat = strLat & "l"
Case "Ë"
strLat = strLat & "l"
Case "ì"
strLat = strLat & "m"
Case "Ì"
strLat = strLat & "m"
Case "í"
strLat = strLat & "n"
Case "Í"
strLat = strLat & "n"
Case "î"
strLat = strLat & "o"
Case "Î"
strLat = strLat & "o"
Case "ï"
strLat = strLat & "p"
Case "Ï"
strLat = strLat & "p"
Case "ð"
strLat = strLat & "r"
Case "Ð"
strLat = strLat & "r"
Case "ñ"
strLat = strLat & "s"
Case "Ñ"
strLat = strLat & "s"
Case "ò"
strLat = strLat & "t"
Case "Ò"
strLat = strLat & "t"
Case "ó"
strLat = strLat & "u"
Case "Ó"
strLat = strLat & "u"
Case "ô"
strLat = strLat & "f"
Case "Ô"
strLat = strLat & "f"
Case "õ"
strLat = strLat & "kh"
Case "Õ"
strLat = strLat & "kh"
Case "ö"
strLat = strLat & "ts"
Case "Ö"
strLat = strLat & "ts"
Case "÷"
strLat = strLat & "ch"
Case "×"
strLat = strLat & "ch"
Case "ø"
strLat = strLat & "sh"
Case "Ø"
strLat = strLat & "sh"
Case "ù"
strLat = strLat & "sch"
Case "Ù"
strLat = strLat & "sch"
Case "ú"
strLat = strLat & ""
Case "Ú"
strLat = strLat & ""
Case "û"
strLat = strLat & "y"
Case "Û"
strLat = strLat & "y"
Case "ü"
strLat = strLat & ""
Case "Ü"
strLat = strLat & ""
Case "ý"
strLat = strLat & "e"
Case "Ý"
strLat = strLat & "e"
Case "þ"
strLat = strLat & "yu"
Case "Þ"
strLat = strLat & "yu"
Case "ÿ"
strLat = strLat & "ya"
Case "ß"
strLat = strLat & "ya"
case "«"
strLat = strLat & ""
case "»"
strLat = strLat & ""
case " "
strLat = strLat & "-"
Case Else
strLat = strLat & strTemp
End Select
Next
Rus2Lat = strLat
End Function
' Åñëè ó ñêðèïòà åñòü àðãóìåíòû
If WScript.Arguments.Count = 1 Then
rsDate = ""
' Ïåðâûé àðãóìåíò äîëæåí áûòü ïàïêîé, êîòîðóþ áóäåì îáðàáàòûâàòü.
strSourceFolder = WScript.Arguments.Item(0)
' Ñîçäà¸ì îáúåêò äëÿ ðàáîòû ñ ôàéëîâîé ñèñòåìîé
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
' Åñëè ïàïêà ñóùåñòâóåò
If objFSO.FolderExists(strSourceFolder) Then
Set objWord = Nothing
fCount = 0
Set csvFile = objFSO.CreateTextFile(strSourceFolder & "\multiTV-import.csv", True)
For Each objFile In objFSO.GetFolder(strSourceFolder).Files
If StrComp(objFSO.GetExtensionName(objFile.Name), "docx", vbTextCompare) = 0 Then
' Çàïóñêàåì Word åñëè îí åù¸ íå çàïóùåí
If objWord Is Nothing Then
Set objWord = WScript.CreateObject("Word.Application")
End If
' Ïóñòîé çàãîëîâîê
docTitle = ""
' Îòêðûâàåì äîêóìåíò
Set objDocument = objWord.Documents.Open(objFile.Path)
' Ïîëó÷àåì îáúåêò ñâîéñò äîêóìåíòà
Set customProp = objDocument.BuiltinDocumentProperties
' Ïîëó÷àåì äàòó
rsDate = objFSO.GetBaseName(strSourceFolder) & "." & objFSO.GetExtensionName(strSourceFolder)
' Ñîáèðàåì çàãîëîâîê
docTitle = fTitle & objFSO.GetBaseName(objFile.Name) & cTitle & rsDate
' Ïåðåáèðàåì ñâîéñòâà äîêóìåíòà
For Each prop in customProp
' Óñòàíàâëèâàåì íóæíûå ñâîéñòâà äîêóìåíòà
Select case prop.Name
' Çàãîëîâîê äîêóìåíòà
case "Title"
prop.Value = docTitle & " " & tGboy
' Òåìà äîêóìåíòà
case "Subject"
prop.Value = docTitle & " " & tGboy
' Àâòîð äîêóìåíòà
case "Author"
prop.Value = tGboy
' Êîìïàíèÿ
case "Company"
prop.Value = tGboy
End Select
Next
' Ñîõðàíÿåì äîêóìåíò êàê PDF. Òðàíñëèò èìåíè ôàéëà äëÿ ñîõðàíåíèÿ
' Òàê æå ñíà÷àëî ñîõðàíèòüñÿ ñàì äîêóìåíò ïåðåä êîíâåðòàöèåé.
objDocument.SaveAs2 objFSO.BuildPath(objFile.ParentFolder.Path, Rus2Lat(objFSO.GetBaseName(objFile.Name)) & ".pdf"), PDF
' Çàïèñûâàåì äàííûå â csv ôàéë
csvText = """" & docTitle & """;""" & assetsFolder & assetsType & "/" & rsDate & "/" & Rus2Lat(objFSO.GetBaseName(objFile.Name)) & ".pdf"""
csvFile.WriteLine(csvText)
' Çàêðûâàåì äîêóìåíò
objDocument.Close
' Îáíóëÿåì ïåðåìåííóþ
' Set objDocument = Nothing
fCount = fCount + 1
End If
Next
' Åñëè Word çàïóùåí - çàêðîåì åãî
If Not objWord Is Nothing Then
objWord.Quit
End If
' Îáíóëÿåì ïåðåìåííóþ
Set objWord = Nothing
' Çàêðûâàåì csv ôàéë
csvFile.Close
' Âûâîä ñîîáùåíèÿ î êîëè÷åñòâå îáðàáîòàííûõ ôàéëîâ
MsgBox "Îáðàáîòàíî " & fCount & " ôàéëîâ"
End If
' Îáíóëÿåì ïåðåìåííóþ
Set objFSO = Nothing
Else
MsgBox "Not found parametrs"
End If
' Âûõîäèì èç âûïîëíåíèÿ ñöåíàðèÿ.
WScript.Quit 0