20260324

【自炊用】画像が入っているフォルダからファイル名順にePub


【自炊用】画像が入っているフォルダからファイル名順にePub

NOTE記事一覧ですnote.com
ダウンロードはこちら

【スクリプトエディタで開く】 |

epubフォルダ名右→左.scpt
ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004(*
005自炊用
006画像ファイル=各ページ で
007EPUBのコンテンツを生成します
008出来上がったフォルダを
009EPUB圧縮.applescript
010
011圧縮してEPUBの出来上がりになります
012
013v1 初回作成
014v1.0.1 ID coverをcover-pageに変更 プロパティを一部追加した
015v1.1 ドキュメント名をフォルダ名にすることにした
016v1.1.1 viewportのinitial-scaleを廃止
017v1.1.2 media-typeをcalibre互換に修正した
018
019#com.cocolog-nifty.quicktimer.icefloe *)
020----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
021use AppleScript version "2.8"
022use framework "Foundation"
023use framework "AppKit"
024use scripting additions
025property refMe : a reference to current application
026
027
028#############################
029### 設定項目
030#タイトル
031#    -->フォルダ名を採用することにしたので使用しない
032#   set strDocumentTitle to ("ドキュメントのタイトル") as text
033
034#一般的には著者 または 作成者
035property strAuthor : ("com.cocolog-nifty.quicktimer") as text
036
037#表紙のラベル (この設定は表紙なしなので設定しなくてもOK)
038property strLabelTitle : ("表紙") as text
039
040#表紙ページを付与するか 
041#   trueで表紙ページあり 
042#   falseで表紙ページなし
043property boolCoverPage : true as boolean
044
045# 左開き? ltr (left-to-right) 
046#      右開き? rtl (right-to-left) 
047property strPageProgression : ("rtl") as text
048
049#見開き調整 trueで表紙をコンテンツから抜いて1ページずらします
050#見開きページがズレる場合に true を入れてください
051property boolProgression : false as boolean
052
053
054#############################
055### ここから本処理
056(*
057大まかな手順
058【1】ROOT フォルダ:META-INF OPS ファイル:mimetype
059【1-2】mimetype
060
061【2】META-INF ファイル: container.xml com.apple.ibooks.display-options.xml
062【2-1】container.xml
063【2-2】com.apple.ibooks.display-options.xml
064
065【3】OPS
066【3-1】css book.css
067【3-2】js         book.js
068【3-3】images
069【3-4】toc.ncx
070【3-5】content.opf
071【3-6】toc.xhtml
072【3-7】page-XXXX.xhtml
073【3-8】cover.xhtml
074*)
075
076#############################
077#
078on run {listAliasDirPath}
079   
080   (*
081
082
083on run
084   
085   #############################
086   #ダイアログ
087   tell current application
088      set strName to name as text
089   end tell
090   if strName is "osascript" then
091      tell application "Finder" to activate
092   else
093      tell current application to activate
094   end if
095   set appFileManager to refMe's NSFileManager's defaultManager()
096   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
097   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
098   set aliasDefaultLocation to (ocidDesktopDirPathURL's absoluteURL()) as alias
099   set listUTI to {"public.image"} as list
100   set strMes to ("画像フォルダを選んでください") as text
101   set strPrompt to ("画像フォルダを選んでください") as text
102   try
103      tell application "SystemUIServer"
104         activate
105         set listAliasDirPath to (choose folder strMes with prompt strPrompt default location aliasDefaultLocation with invisibles, multiple selections allowed and showing package contents) as list
106      end tell
107   on error strErrMsg number numErrNo
108      log "No: " & numErrNo & linefeed & "Error:" & strErrMsg
109      return false
110   end try
111   if listAliasDirPath is {} then
112      log "選んでください"
113      return false
114   end if
115         *)
116   
117   set boolDone to (open listAliasDirPath) as boolean
118   return boolDone
119end run
120
121#############################
122#
123on open listAliasDirPath
124   #NSFileManagerを初期化しておく
125   set appFileManager to refMe's NSFileManager's defaultManager()
126   #処理が可能なUTI=画像全般
127   set ocidImageUTType to (refMe's UTType's typeWithIdentifier:("public.image"))
128   
129   #フォルダ以外が来たら中止
130   repeat with itemDirPath in listAliasDirPath
131      set aliasDirPath to itemDirPath as alias
132      set recordInfoFor to (info for aliasDirPath) as record
133      set boolIsDir to (folder of recordInfoFor) as boolean
134      if boolIsDir is false then
135         return false
136      end if
137   end repeat
138   #この時点でエリアスリストの中身はフォルダ
139   #ファイル名順にソートするのでOBJCにする
140   repeat with itemDirPath in listAliasDirPath
141      #次工程に回すArray
142      set ocidImageFilePathURLArrayM to refMe's NSMutableArray's alloc()'s init()
143      #パス
144      set aliasDirPath to itemDirPath as alias
145      set strDirPath to (POSIX path of aliasDirPath) as text
146      set ocidDirPathStr to (refMe's NSString's stringWithString:(strDirPath))
147      set ocidDirPath to ocidDirPathStr's stringByStandardizingPath()
148      set ocidDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidDirPath) isDirectory:(true))
149      #コンテンツの収集
150      set ocidOption to (refMe's NSDirectoryEnumerationSkipsHiddenFiles)
151      set ocidKeyArray to refMe's NSMutableArray's alloc()'s init()
152      (ocidKeyArray's addObject:(refMe's NSURLPathKey))
153      (ocidKeyArray's addObject:(refMe's NSURLNameKey))
154      (ocidKeyArray's addObject:(refMe's NSURLContentTypeKey))
155      set listResponse to (appFileManager's contentsOfDirectoryAtURL:(ocidDirPathURL) includingPropertiesForKeys:(ocidKeyArray) options:(ocidOption) |error|:(reference))
156      set ocidFileURLArray to (first item of listResponse)
157      #収集したURLを順番に
158      repeat with itemFilePathURL in ocidFileURLArray
159         set listResponse to (itemFilePathURL's getResourceValue:(reference) forKey:(refMe's NSURLContentTypeKey) |error|:(reference))
160         if (first item of listResponse) is true then
161            set ocidUTI to (second item of listResponse)
162            set boolConform to (ocidUTI's conformsToType:(ocidImageUTType)) as boolean
163            if boolConform is true then
164               (ocidImageFilePathURLArrayM's addObject:(itemFilePathURL))
165            end if
166         end if
167      end repeat
168      #ソート
169      set ocidDescriptor to (refMe's NSSortDescriptor's sortDescriptorWithKey:("lastPathComponent") ascending:(yes) selector:("localizedStandardCompare:"))
170      set ocidDescriptorArray to (refMe's NSArray's arrayWithObject:(ocidDescriptor))
171      set ocidSortedArray to (ocidImageFilePathURLArrayM's sortedArrayUsingDescriptors:(ocidDescriptorArray))
172      #
173      set {boolDone, ocidContainerFilePathURL} to doMakeEpub(ocidSortedArray)
174      if boolDone is true then
175         set aliasDirPath to (ocidContainerFilePathURL's absoluteURL()) as alias
176         set boolDone to doMakeZip(aliasDirPath)
177      end if
178   end repeat
179   return boolDone
180end open
181
182#############################
183#
184on doMakeEpub(ocidSortedArray)
185   
186   ######
187   ##設定項目(詳細)
188   ##XMLファイル名の接頭語
189   set strBaseFileName to ("page-") as text
190   ##コピー後のファイル名の接頭名 コピー後のファイル名を固定にする事で後処理を少し簡素化
191   set strBaseImageFileName to ("Image_") as text
192   #############################
193   ###ドキュメントのUUID
194   set ocidUUID to refMe's NSUUID's alloc()'s init()
195   set strUUID to ocidUUID's UUIDString as text
196   ##パス 保存先パス
197   set appFileManager to refMe's NSFileManager's defaultManager()
198   set ocidURLsArray to (appFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))
199   set ocidDesktopDirPathURL to ocidURLsArray's firstObject()
200   ##選んだ画像の最初のファイル
201   set ocidFirstFilePathURL to ocidSortedArray's firstObject()
202   set ocidContainerDirPathURL to ocidFirstFilePathURL's URLByDeletingLastPathComponent()
203   set ocidContainerDirName to ocidContainerDirPathURL's lastPathComponent()
204   ###フォルダ名
205   set strContainerDirName to (ocidContainerDirName) as text
206   set strMakeDirName to (strContainerDirName & "_EPUB") as text
207   set strDocumentTitle to (strContainerDirName) as text
208   ###設定項目の名称がフォルダ名
209   set ocidEpubDirPathURL to ocidDesktopDirPathURL's URLByAppendingPathComponent:(strMakeDirName)
210   set ocidEpubDirPath to ocidEpubDirPathURL's |path|()
211   ##############################
212   ##必要なフォルダを作る
213   set appFileManager to refMe's NSFileManager's defaultManager()
214   set ocidAttrDict to (refMe's NSMutableDictionary's alloc()'s initWithCapacity:0)
215   ##アクセス権755この値は後でも使う
216   (ocidAttrDict's setValue:(493) forKey:(refMe's NSFilePosixPermissions))
217   ##フォルダのパスのリスト
218   set listDirName to {"OPS", "OPS/css", "OPS/images", "OPS/js", "META-INF"} as list
219   ##stringsByAppendingPathsでARRAYにする
220   set ocidSubPathArray to ocidEpubDirPath's stringsByAppendingPaths:(listDirName)
221   ##ARRAYの分だけ
222   repeat with itemSubPathArray in ocidSubPathArray
223      ##フォルダを作る
224      set listBoolMakeDir to (appFileManager's createDirectoryAtPath:(itemSubPathArray) withIntermediateDirectories:true attributes:(ocidAttrDict) |error|:(reference))
225   end repeat
226   #################################################################################
227   ###   【1】ROOT フォルダ:META-INF OPS ファイル:mimetype
228   set ocidEpubDirPathURL to (refMe's NSURL's alloc()'s initFileURLWithPath:(ocidEpubDirPath) isDirectory:true)
229   ###   【1-2】mimetype
230   ##保存先パス
231   set ocidMimetypeFilePathURL to ocidEpubDirPathURL's URLByAppendingPathComponent:("mimetype") isDirectory:false
232   ##内容
233   set strMimetype to ("application/epub+zip") as text
234   set ocidMimetype to refMe's NSString's stringWithString:(strMimetype)
235   ##ファイルに保存して
236   set listDone to ocidMimetype's writeToURL:(ocidMimetypeFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
237   ##アクセス権755を指定する
238   set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidMimetypeFilePathURL's |path|) |error|:(reference)
239   #################################################################################
240   ###   【3】OPS
241   set ocidOPSDirPathURL to ocidEpubDirPathURL's URLByAppendingPathComponent:("OPS") isDirectory:true
242   ######◆ 【3-1】css book.css
243   ##フォルダのパス
244   set ocidCssDirPathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("css") isDirectory:true
245   ###ファイルのパス
246   set ocidCssFilePathURL to ocidCssDirPathURL's URLByAppendingPathComponent:("book.css") isDirectory:false
247   ##ファイルの中身
248   set strCssContents to ("body { margin: 0; padding: 0; border: 0;}a:link { color: inherit;}a:visited { color: inherit;}a:hover { color: inherit;}a:active { color: inherit;}a{text-decoration: none;}p{margin: 0px;}sub{vertical-align: -10%;font-size: 67%;}sup{vertical-align: 33%;font-size: 67%;}.s1{background: transparent;}.p1{padding-left: 0;margin-top: 0;padding-top: 0;padding-right: 0;margin-bottom: 0;padding-bottom: 0;font-style: normal;font-weight: 400;font-stretch: normal;font-size: 100.000%;color: #000000;letter-spacing: 0.000em;font-variant: normal;text-transform: none;text-align: left;text-indent: 0;line-height: 1.545em;hyphens: none;-webkit-hyphens: none;-webkit-text-stroke-color: initial;-webkit-text-stroke-width: initial;text-shadow: none;}.c1{background: transparent;}.body {width: 100%;}.underline {text-decoration: underline;}.orientation-opposed .underline {text-decoration: overline;}.strikethrough {text-decoration: line-through;}.underline-strikethrough {text-decoration: underline line-through;}.orientation-opposed .underline-strikethrough {text-decoration: overline line-through;}") as text
249   set ocidCssContents to refMe's NSString's stringWithString:(strCssContents)
250   ##保存
251   set listDone to ocidCssContents's writeToURL:(ocidCssFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
252   ##アクセス権
253   set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidCssFilePathURL's |path|) |error|:(reference)
254   ######◆   【3-2】js         book.js
255   ##フォルダのパス
256   set ocidJsDirPathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("js") isDirectory:true
257   ###ファイルのパス
258   set ocidJsFilePathURL to ocidJsDirPathURL's URLByAppendingPathComponent:("book.js") isDirectory:false
259   ##ファイルの中身
260   set strJsContents to ("function Body_onLoad() {}") as text
261   set ocidJsContents to refMe's NSString's stringWithString:(strJsContents)
262   ##保存
263   set listDone to ocidJsContents's writeToURL:(ocidJsFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
264   ##アクセス権
265   set listDone to appFileManager's setAttributes:(ocidAttrDict) ofItemAtPath:(ocidJsFilePathURL's |path|) |error|:(reference)
266   ######◆ 【3-3】images イメージファイルをコピーします
267   set ocidImagesDirPathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("images") isDirectory:true
268   
269   set numCntPage to 1 as integer
270   set numCntAllImage to ocidSortedArray's |count|() as integer
271   set listImageFileName to {} as list
272   
273   ##画像ファイルの数だけ繰り返し
274   repeat with ocidFilePathURL in ocidSortedArray
275      ##拡張子
276      set ocidExtensionName to ocidFilePathURL's pathExtension()
277      ###コピー後の画像ファイルは連番処理 四桁のゼロサプレス
278      set strZeroSup to "0000" as text
279      set strSeroSup to (strZeroSup & (numCntPage as text)) as text
280      set strSeroSup to (text -4 through -1 of strSeroSup) as text
281      set strFileName to (strBaseImageFileName & strSeroSup) as text
282      ##コピー先URL
283      set ocidBaseFilePathURL to (ocidImagesDirPathURL's URLByAppendingPathComponent:(strFileName))
284      set ocidSaveFilePathURL to (ocidBaseFilePathURL's URLByAppendingPathExtension:(ocidExtensionName))
285      ##ファイル名のリストを作っておく
286      set ocidImageFileName to ocidSaveFilePathURL's lastPathComponent()
287      set strImageFileName to ocidImageFileName as text
288      set end of listImageFileName to strImageFileName
289      ###コピー
290      set appFileManager to refMe's NSFileManager's defaultManager()
291      set listDone to (appFileManager's copyItemAtURL:(ocidFilePathURL) toURL:(ocidSaveFilePathURL) |error|:(reference))
292      ##カウントアップ
293      set numCntPage to numCntPage + 1 as integer
294   end repeat
295   
296   
297   #################################
298   ###◆ 【3-7】page-XXXX.xhtml
299   ##配置オブジェクトが画像1つ限定なのでシンプルな構造
300   ##【3-7-A】 root エレメント 【3-7-B】 head エレメント 【3-7-C】 body エレメント
301   ##カウンター
302   set numCntPage to 1 as integer
303   ##総画像ファイルする右=ページ数
304   set numCntAllImage to ocidSortedArray's |count|() as integer
305   ##画像の数だけ繰り返し
306   repeat numCntAllImage times
307      ###ファイルは連番処理 四桁のゼロサプレス
308      set strZeroSup to "0000" as text
309      set strSeroSup to (strZeroSup & (numCntPage as text)) as text
310      set strSeroSup to (text -4 through -1 of strSeroSup) as text
311      set strFileName to (strBaseFileName & strSeroSup & ".xhtml") as text
312      ##XHTMLのパス
313      set ocidXHTMLFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:(strFileName) isDirectory:false
314      ##配置画像
315      ##不具合の元かもしれないが拡張子判定する方法が見つからなかった
316      set strImageName to (item numCntPage of listImageFileName)
317      set ocidImagesFilePathURL to ocidImagesDirPathURL's URLByAppendingPathComponent:(strImageName) isDirectory:false
318      set ocidReadImage to (refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidFilePathURL))
319      ##BitMapRepに変換
320      set ocidReadImageRepArray to ocidReadImage's representations()
321      set ocidReadImageRep to (ocidReadImageRepArray's objectAtIndex:0)
322      ##ピクセルサイズ取得
323      set strPixelsWidth to (ocidReadImageRep's pixelsWide()) as text
324      set strPixelsHeight to (ocidReadImageRep's pixelsHigh()) as text
325      ########
326      ##◆【3-7-A】 root エレメント 
327      set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"html"
328      ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("xml:lang") stringValue:("ja"))
329      ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("http://www.w3.org/1999/xhtml"))
330      ########
331      ##◆【3-7-B】 head エレメント
332      set ocidHeadElement to refMe's NSXMLElement's alloc()'s initWithName:("head")
333      #CSS
334      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("link")
335      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("rel") stringValue:("stylesheet"))
336      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("css/book.css"))
337      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("text/css"))
338      ocidHeadElement's addChild:(ocidMetaElement)
339      #JS
340      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("script")
341      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:("js/book.js"))
342      ocidHeadElement's addChild:(ocidMetaElement)
343      #文字コード
344      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
345      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("charset") stringValue:("UTF-8"))
346      ocidHeadElement's addChild:(ocidMetaElement)
347      #タイトル
348      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("title")
349      set strPageTitle to ("Page : " & strSeroSup) as text
350      ocidMetaElement's setStringValue:(strPageTitle)
351      ocidHeadElement's addChild:(ocidMetaElement)
352      #EPUBドキュメントのUUID
353      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
354      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("EPB-UUID"))
355      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strUUID))
356      ocidHeadElement's addChild:(ocidMetaElement)
357      #ビューポイント ここで画像のサイズ指定=全画面
358      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
359      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport"))
360      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=" & strPixelsWidth & ",height=" & strPixelsHeight & ", initial-scale=1.0"))
361      ocidHeadElement's addChild:(ocidMetaElement)
362      ########
363      ##◆【3-7-C】 body エレメント
364      set ocidBodyElement to refMe's NSXMLElement's alloc()'s initWithName:("body")
365      ocidBodyElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("onload") stringValue:("Body_onLoad()"))
366      #開き方向指定
367      ocidBodyElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("dir") stringValue:(strPageProgression))
368      #一番外側のDIV要素
369      set ocidOutDiivElement to refMe's NSXMLElement's alloc()'s initWithName:("div")
370      #   ocidOutDiivElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("style") stringValue:("position:absolute;left:0;top:0;width: " & strPixelsWidth & "px;height:" & strPixelsHeight & "px;"))
371      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("class") stringValue:("main")
372      ocidOutDiivElement's addAttribute:(ocidAddNode)
373      #
374      set ocidSVGElement to refMe's NSXMLElement's alloc()'s initWithName:("svg")
375      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("xmlns") stringValue:("http://www.w3.org/2000/svg")
376      ocidSVGElement's addAttribute:(ocidAddNode)
377      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("xmlns:xlink") stringValue:("http://www.w3.org/1999/xlink")
378      ocidSVGElement's addAttribute:(ocidAddNode)
379      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("width") stringValue:("100%")
380      ocidSVGElement's addAttribute:(ocidAddNode)
381      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("height") stringValue:("100%")
382      ocidSVGElement's addAttribute:(ocidAddNode)
383      set ocidAddNode to refMe's NSXMLNode's attributeWithName:("viewBox") stringValue:("0 0 " & strPixelsWidth & " " & strPixelsHeight & "")
384      ocidSVGElement's addAttribute:(ocidAddNode)
385      
386      #imgタグ image
387      #      set ocidImgElement to refMe's NSXMLElement's alloc()'s initWithName:("img")
388      set ocidImgElement to refMe's NSXMLElement's alloc()'s initWithName:("image")
389      set strPath to ("images/" & strImageName) as text
390      #      ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:(strPath))
391      ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("xlink:href") stringValue:(strPath))
392      ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("alt") stringValue:(strFileName))
393      ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("width") stringValue:(strPixelsWidth))
394      ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("height") stringValue:(strPixelsHeight))
395      #   ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("style") stringValue:("object-fit: cover;width: " & strPixelsWidth & "px;height:" & strPixelsHeight & "px;"))
396      
397      #imgタグをSVGにセット
398      ocidSVGElement's addChild:(ocidImgElement)
399      
400      
401      #SVGタグをDIVにセット
402      ocidOutDiivElement's addChild:(ocidSVGElement)
403      #DIVをbodyにセット
404      ocidBodyElement's addChild:(ocidOutDiivElement)
405      ########
406      ##【3-7-B】のheadエレメントをAのROOTにセット
407      ocidRootElement's addChild:(ocidHeadElement)
408      ##【3-7-C】 bodyエレメントをAのROOTにセット
409      ocidRootElement's addChild:(ocidBodyElement)
410      ## ↑からのROOTエレメントをセットしてXMLとする
411      set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
412      ocidOutPutXML's setVersion:"1.0"
413      ocidOutPutXML's setCharacterEncoding:"UTF-8"
414      #XMLをテキストにして
415      set ocidSaveStrings to ocidOutPutXML's XMLString()
416      ###改行コードを指定して
417      ocidSaveStrings's appendString:(linefeed)
418      ##保存
419      set listWritetoUrlArray to ocidSaveStrings's writeToURL:(ocidXHTMLFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
420      ##
421      set numCntPage to numCntPage + 1 as integer
422   end repeat
423   
424   #################################
425   ###◆【3-8】cover.xhtml いわゆる表紙ページ
426   # cover-page と cover-imageがあるがここではcover-pageを生成する
427   #保存パス
428   set ocidXHTMLFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("cover.xhtml") isDirectory:false
429   # 表紙イメージ=1ページ目の画像
430   
431   set ocidCoverImageFilePathURL to ocidSortedArray's firstObject()
432   set strExtensionName to (ocidCoverImageFilePathURL's pathExtension()) as text
433   ###
434   set ocidReadImage to (refMe's NSImage's alloc()'s initWithContentsOfURL:(ocidCoverImageFilePathURL))
435   ##BitMapRepに変換
436   set ocidReadImageRepArray to ocidReadImage's representations()
437   set ocidReadImageRep to (ocidReadImageRepArray's objectAtIndex:0)
438   ##ピクセルサイズ取得
439   set strPixelsWidth to (ocidReadImageRep's pixelsWide()) as text
440   set strPixelsHeight to (ocidReadImageRep's pixelsHigh()) as text
441   #######【3-8-A】ルートエレメント XHTMLのルートエレメント
442   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"html"
443   #ネームスペースの追加
444   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("http://www.w3.org/1999/xhtml"))
445   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("epub") stringValue:("http://www.idpf.org/2007/ops"))
446   #アトリビュートの追加
447   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("xml:lang") stringValue:("ja"))
448   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("epub:prefix") stringValue:("ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"))
449   #####【3-6-B】 headエレメント
450   set ocidHeadElement to refMe's NSXMLElement's alloc()'s initWithName:("head")
451   #タイトル
452   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("title")
453   ocidMetaElement's setStringValue:("表紙:Cover Page")
454   ocidHeadElement's addChild:(ocidMetaElement)
455   #スタイルシートへのリンク
456   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("link")
457   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("rel") stringValue:("stylesheet"))
458   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("css/book.css"))
459   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("text/css"))
460   ocidHeadElement's addChild:(ocidMetaElement)
461   #Jsへのリンク
462   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("script")
463   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:("js/book.js"))
464   ocidHeadElement's addChild:(ocidMetaElement)
465   #文字コード宣言
466   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
467   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("charset") stringValue:("UTF-8"))
468   ocidHeadElement's addChild:(ocidMetaElement)
469   #UUID設定
470   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
471   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("EPB-UUID"))
472   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strUUID))
473   ocidHeadElement's addChild:(ocidMetaElement)
474   #ビューポイント
475   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
476   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport"))
477   #ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=" & strPixelsWidth & ",height=" & strPixelsHeight & ", initial-scale=1.0"))
478   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=" & strPixelsWidth & ",height=" & strPixelsHeight & ""))
479   ocidHeadElement's addChild:(ocidMetaElement)
480   ######【3-8-C】ボディエレメント
481   set ocidBodyElement to refMe's NSXMLElement's alloc()'s initWithName:("body")
482   ocidBodyElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("onload") stringValue:("Body_onLoad()"))
483   #開き方向
484   ocidBodyElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("dir") stringValue:(strPageProgression))
485   #
486   set ocidOutDiivElement to refMe's NSXMLElement's alloc()'s initWithName:("div")
487   ocidOutDiivElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("style") stringValue:("position:absolute;left:0;top:0;width: " & strPixelsWidth & "px;height:" & strPixelsHeight & "px;"))
488   ##
489   set ocidImgElement to refMe's NSXMLElement's alloc()'s initWithName:("img")
490   set strImageName to (strBaseImageFileName & "0001." & strExtensionName) as text
491   set strPath to ("images/" & strImageName) as text
492   ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:(strPath))
493   ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("alt") stringValue:(strFileName))
494   ocidImgElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("style") stringValue:("object-fit: cover;width: " & strPixelsWidth & "px;height:" & strPixelsHeight & "px;"))
495   ocidOutDiivElement's addChild:(ocidImgElement)
496   ocidBodyElement's addChild:(ocidOutDiivElement)
497   ####
498   #【3-8-B】 head を【3-8-A】 ルートエレメントに追加
499   ocidRootElement's addChild:(ocidHeadElement)
500   #【3-8-C】 body を【3-8-A】ルートエレメントに追加
501   ocidRootElement's addChild:(ocidBodyElement)
502   ## ↑からのROOTエレメントをセットしてXMLとする
503   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
504   ocidOutPutXML's setVersion:"1.0"
505   ocidOutPutXML's setCharacterEncoding:"UTF-8"
506   ###テキストにして
507   set ocidSaveStrings to ocidOutPutXML's XMLString()
508   ###改行コードを指定して
509   ocidSaveStrings's appendString:(linefeed)
510   ##保存
511   set listDone to ocidSaveStrings's writeToURL:(ocidXHTMLFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
512   #################################
513   ###◆ 【3-6】toc.xhtml いわゆる目次
514   #【3-6-B】 head 【3-6-C】 body 
515   #保存パス
516   set ocidXHTMLFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("toc.xhtml") isDirectory:false
517   #【3-6-A】ルートエレメント XHTMLのルートエレメント
518   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"html"
519   #ネームスペースの追加
520   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("http://www.w3.org/1999/xhtml"))
521   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("epub") stringValue:("http://www.idpf.org/2007/ops"))
522   #アトリビュートの追加
523   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("xml:lang") stringValue:("ja"))
524   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("epub:prefix") stringValue:("ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"))
525   #####【3-6-B】 headエレメント
526   set ocidHeadElement to refMe's NSXMLElement's alloc()'s initWithName:("head")
527   #タイトル
528   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("title")
529   ocidMetaElement's setStringValue:("目次:Table of Contents")
530   ocidHeadElement's addChild:(ocidMetaElement)
531   #スタイルシートへのリンク
532   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("link")
533   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("rel") stringValue:("stylesheet"))
534   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("css/book.css"))
535   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("text/css"))
536   ocidHeadElement's addChild:(ocidMetaElement)
537   #文字コード宣言
538   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
539   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("charset") stringValue:("UTF-8"))
540   ocidHeadElement's addChild:(ocidMetaElement)
541   #UUID設定
542   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
543   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("EPB-UUID"))
544   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strUUID))
545   ocidHeadElement's addChild:(ocidMetaElement)
546   #ビューポイント
547   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
548   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("viewport"))
549   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("width=device-width, initial-scale=1.0"))
550   ocidHeadElement's addChild:(ocidMetaElement)
551   ####【3-6-C】 body 
552   set ocidBodyElement to refMe's NSXMLElement's alloc()'s initWithName:("body")
553   #bodyエレメントに開き方向のアトリビュート
554   ocidBodyElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("dir") stringValue:(strPageProgression))
555   #タイトルをH1で入れて
556   set ocidBodyItem to refMe's NSXMLElement's alloc()'s initWithName:("h1")
557   ocidBodyItem's setStringValue:(strDocumentTitle)
558   ocidBodyElement's addChild:(ocidBodyItem)
559   #区切り線
560   set ocidBodyItem to refMe's NSXMLElement's alloc()'s initWithName:("hr")
561   ocidBodyElement's addChild:(ocidBodyItem)
562   #メインの要素
563   set ocidBodyItem to refMe's NSXMLElement's alloc()'s initWithName:("div")
564   ocidBodyItem's addAttribute:(refMe's NSXMLNode's attributeWithName:("class") stringValue:("nav-body"))
565   ocidBodyItem's addAttribute:(refMe's NSXMLNode's attributeWithName:("style") stringValue:("white-space:pre-wrap; line-break:strict;"))
566   
567   ocidBodyElement's addChild:(ocidBodyItem)
568   #ナビ
569   set ocidNavItem to refMe's NSXMLElement's alloc()'s initWithName:("nav")
570   ocidNavItem's addAttribute:(refMe's NSXMLNode's attributeWithName:("epub:type") stringValue:("toc"))
571   ocidNavItem's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("toc"))
572   #リスト
573   set ocidNavOL to refMe's NSXMLElement's alloc()'s initWithName:("ol")
574   #番号初期化
575   set numCntPage to 1 as integer
576   #総ページ数の数だけ繰り返し
577   repeat numCntAllImage times
578      ###画像ファイルは連番処理 四桁のゼロサプレス
579      set strZeroSup to "0000" as text
580      set strSeroSup to (strZeroSup & (numCntPage as text)) as text
581      set strSeroSup to (text -4 through -1 of strSeroSup) as text
582      set strLinkFileName to (strBaseFileName & strSeroSup) as text
583      set strFileName to (strBaseFileName & strSeroSup & ".xhtml") as text
584      ####
585      set ocidNavLI to refMe's NSXMLElement's alloc()'s initWithName:("li")
586      set ocidNavA to refMe's NSXMLElement's alloc()'s initWithName:("a")
587      ocidNavA's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strFileName))
588      ocidNavA's setStringValue:(strLinkFileName)
589      ocidNavLI's addChild:(ocidNavA)
590      ocidNavOL's addChild:(ocidNavLI)
591      set numCntPage to numCntPage + 1 as integer
592   end repeat
593   ##リストに表紙ページを追加
594   set ocidNavLI to refMe's NSXMLElement's alloc()'s initWithName:("li")
595   set ocidNavA to refMe's NSXMLElement's alloc()'s initWithName:("a")
596   ocidNavA's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("cover.xhtml"))
597   ocidNavA's addAttribute:(refMe's NSXMLNode's attributeWithName:("epub:type") stringValue:("ibooks:reader-start-page"))
598   ocidNavA's setStringValue:("Cover Page")
599   ocidNavLI's addChild:(ocidNavA)
600   ocidNavOL's addChild:(ocidNavLI)
601   #リストに目次を追加
602   set ocidNavLI to refMe's NSXMLElement's alloc()'s initWithName:("li")
603   set ocidNavA to refMe's NSXMLElement's alloc()'s initWithName:("a")
604   ocidNavA's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("toc.xhtml"))
605   ocidNavA's addAttribute:(refMe's NSXMLNode's attributeWithName:("epub:type") stringValue:("toc"))
606   ocidNavA's setStringValue:("Table of Contents")
607   ocidNavLI's addChild:(ocidNavA)
608   ocidNavOL's addChild:(ocidNavLI)
609   #出来上がったリストをbodyに追加
610   ocidNavItem's addChild:(ocidNavOL)
611   ocidBodyItem's addChild:(ocidNavItem)
612   ####
613   #【3-6-B】 head を【3-6-A】 ルートエレメントに追加
614   ocidRootElement's addChild:(ocidHeadElement)
615   #【3-6-C】 body を【3-6-A】ルートエレメントに追加
616   ocidRootElement's addChild:(ocidBodyElement)
617   ## ↑からのROOTエレメントをセットしてXMLとする
618   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
619   ocidOutPutXML's setVersion:"1.0"
620   ocidOutPutXML's setCharacterEncoding:"UTF-8"
621   ###テキストにして
622   set ocidSaveStrings to ocidOutPutXML's XMLString()
623   ###改行コードを指定して
624   ocidSaveStrings's appendString:(linefeed)
625   ##保存
626   set listDone to ocidSaveStrings's writeToURL:(ocidXHTMLFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
627   
628   #############################################
629   ###◆【3-5】content.opf
630   ##【B】メタ情報のheadからなる 【C】各種コンテンツへのパス manifest と 【D】コンテンツの配置 spine  【E】ガイドguide
631   ##Pageの場合
632   ##   set ocidOptFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("epb.opf") isDirectory:false
633   ##一般的な命名
634   set ocidOptFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("content.opf") isDirectory:false
635   ##【A】ルートエレメント
636   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"package"
637   #アトリビュートを追加
638   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("version") stringValue:("3.0"))
639   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("unique-identifier") stringValue:("BookId"))
640   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("prefix") stringValue:("ibooks: http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/ rendition: http://www.idpf.org/vocab/rendition/#"))
641   #ネームスペースを追加
642   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("http://www.idpf.org/2007/opf"))
643   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("ibooks") stringValue:("http://vocabulary.itunes.apple.com/rdf/ibooks/vocabulary-extensions-1.0/"))
644   ##################
645   #【B】メタ情報のhead
646   set ocidMetaDataElement to refMe's NSXMLElement's alloc()'s initWithName:("metadata")
647   ocidMetaDataElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("dc") stringValue:("http://purl.org/dc/elements/1.1/"))
648   ocidMetaDataElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("opf") stringValue:("http://www.idpf.org/2007/opf"))
649   #◆【B-1】タイトル
650   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:title")
651   ocidMetaElement's setStringValue:(strDocumentTitle)
652   ocidMetaDataElement's addChild:(ocidMetaElement)
653   #◆【B-2】作成者 著者
654   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:creator")
655   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("creator"))
656   ocidMetaElement's setStringValue:(strAuthor)
657   ocidMetaDataElement's addChild:(ocidMetaElement)
658   #◆【B-3】UUID
659   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:identifier")
660   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("BookId"))
661   ocidMetaElement's setStringValue:(strUUID)
662   ocidMetaDataElement's addChild:(ocidMetaElement)
663   #◆【B-4】言語
664   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:language")
665   ocidMetaElement's setStringValue:("ja")
666   ocidMetaDataElement's addChild:(ocidMetaElement)
667   #◆【B-5】作成日
668   set strSetDate to doGetDateNo("yyyy-MM-dd") as text
669   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:date")
670   ocidMetaElement's setStringValue:(strSetDate)
671   ocidMetaDataElement's addChild:(ocidMetaElement)
672   #◆【B-6】修正日
673   set strSetDate to doGetDateNo("yyyy-MM-dd'T'HH:mm:ss'Z'") as text
674   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("dc:modified")
675   ocidMetaElement's setStringValue:(strSetDate)
676   ocidMetaDataElement's addChild:(ocidMetaElement)
677   #◆【B-7】コンテンツのプロパティ レイアウト
678   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
679   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("property") stringValue:("rendition:layout"))
680   ##リフロータイプのレイアウト 柔軟な表示形式 文字中心なものに最適
681   #   ocidMetaElement's setStringValue:("reflowable")
682   ##固定型のレイアウト 画面サイズに依存しない表示 画面のレイアウトを優先したい場合
683   #   ocidMetaElement's setStringValue:("fixed")
684   ##事前にページ化されたレイアウト  ページベースの表示形式 画像コンテンツに最適
685   ocidMetaElement's setStringValue:("pre-paginated")
686   ocidMetaDataElement's addChild:(ocidMetaElement)
687   #◆【B-8】コンテンツのプロパティ スプレッド 開き方
688   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
689   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("property") stringValue:("rendition:spread"))
690   ##デバイスの向きに依存しない
691   ocidMetaElement's setStringValue:("both")
692   ##横
693   #ocidMetaElement's setStringValue:("landscape")
694   ##縦 非推奨
695   #ocidMetaElement's setStringValue:("portrait")
696   ##単ページ
697   ##ocidMetaElement's setStringValue:("none")
698   ##自動
699   ##ocidMetaElement's setStringValue:("auto")
700   ocidMetaDataElement's addChild:(ocidMetaElement)
701   #◆【B-9】向き
702   set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
703   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("property") stringValue:("rendition:orientation"))
704   #自動
705   ocidMetaElement's setStringValue:("auto")
706   ##横
707   #ocidMetaElement's setStringValue:("landscape")
708   ##縦
709   #ocidMetaElement's setStringValue:("portrait")
710   ocidMetaDataElement's addChild:(ocidMetaElement)
711   ##表紙の有無での分岐
712   if boolCoverPage is true then
713      set ocidMetaElement to refMe's NSXMLElement's alloc()'s initWithName:("meta")
714      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("cover"))
715      ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("cover-image"))
716      ocidMetaDataElement's addChild:(ocidMetaElement)
717   end if
718   
719   ##################
720   ### 【C】各種コンテンツへのパス manifest
721   ##manifestのROOTエレメント
722   set ocidManifestElement to refMe's NSXMLElement's alloc()'s initWithName:("manifest")
723   #CSS追加
724   set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
725   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("stylesheet"))
726   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("css/book.css"))
727   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("text/css"))
728   ocidManifestElement's addChild:(ocidItemElement)
729   #JS追加
730   set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
731   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("javascript"))
732   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("js/book.js"))
733   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("text/javascript"))
734   ocidManifestElement's addChild:(ocidItemElement)
735   #NCX追加
736   set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
737   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("ncx"))
738   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("toc.ncx"))
739   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/x-dtbncx+xml"))
740   ocidManifestElement's addChild:(ocidItemElement)
741   #目次追加
742   set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
743   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("toc"))
744   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("toc.xhtml"))
745   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/xhtml+xml"))
746   ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("properties") stringValue:("nav"))
747   ocidManifestElement's addChild:(ocidItemElement)
748   ##表紙 表示画像
749   if boolCoverPage is true then
750      ##表紙ページ設定
751      
752      set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
753      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("cover"))
754      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("cover.xhtml"))
755      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/x-dtbncx+xml"))
756      
757      
758      set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
759      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("cover-page"))
760      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("cover.xhtml"))
761      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/x-dtbncx+xml"))
762      
763      
764      ocidManifestElement's addChild:(ocidItemElement)
765      ##表紙画像
766      set ocidExtensionName to ocidCoverImageFilePathURL's pathExtension()
767      ####拡張子からUTI取得
768      set ocidUTType to (refMe's UTType's typeWithFilenameExtension:(ocidExtensionName))
769      set ocidFileMimeType to ocidUTType's preferredMIMEType()
770      ##MimeTypeを取得してから
771      set strFileMimeType to ocidFileMimeType as text
772      #設定
773      set strCoverImageFileName to (strBaseImageFileName & "0001." & (ocidExtensionName as text)) as text
774      set strHref to ("images/" & strCoverImageFileName) as text
775      set ocidItemElement to refMe's NSXMLElement's alloc()'s initWithName:("item")
776      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("cover-image"))
777      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strHref))
778      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:(strFileMimeType))
779      ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("properties") stringValue:("cover-image"))
780      ocidManifestElement's addChild:(ocidItemElement)
781   end if
782   
783   set numCntPage to 1 as integer
784   repeat with ocidFilePathURL in ocidSortedArray
785      set ocidExtensionName to ocidFilePathURL's pathExtension()
786      ####拡張子からUTI取得
787      set ocidUTType to (refMe's UTType's typeWithFilenameExtension:(ocidExtensionName))
788      set ocidFileMimeType to ocidUTType's preferredMIMEType()
789      set strFileMimeType to ocidFileMimeType as text
790      ###画像ファイルは連番処理 四桁のゼロサプレス
791      set strZeroSup to "0000" as text
792      set strSeroSup to (strZeroSup & (numCntPage as text)) as text
793      set strSeroSup to (text -4 through -1 of strSeroSup) as text
794      #IDを定義
795      set strBaseImageFileName to ("dataItem") as text
796      set strFileName to (strBaseImageFileName & strSeroSup) as text
797      ##メディア要素(イメージファイル)
798      #itemエレメント
799      set ocidItemElement to (refMe's NSXMLElement's alloc()'s initWithName:("item"))
800      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:(strFileName)))
801      #パス
802      set strSetValue to ("images/Image_" & strSeroSup & "." & (ocidExtensionName as text)) as text
803      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strSetValue)))
804      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:(strFileMimeType)))
805      (ocidManifestElement's addChild:(ocidItemElement))
806      ##ページ要素(XHTMLファイル)
807      set strBaseFileName to ("page-") as text
808      set strFileName to (strBaseFileName & strSeroSup) as text
809      #itemエレメント
810      set ocidItemElement to (refMe's NSXMLElement's alloc()'s initWithName:("item"))
811      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:(strFileName)))
812      #パス
813      set strSetValue to (strBaseFileName & strSeroSup & ".xhtml") as text
814      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strSetValue)))
815      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/xhtml+xml")))
816      (ocidItemElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("properties") stringValue:("scripted")))
817      (ocidManifestElement's addChild:(ocidItemElement))
818      ##カウントアップ
819      set numCntPage to numCntPage + 1 as integer
820   end repeat
821   
822   ########################
823   #【D】コンテンツの配置 spine
824   set ocidSpineElement to refMe's NSXMLElement's alloc()'s initWithName:("spine")
825   ##アトリビュート
826   ocidSpineElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("toc") stringValue:("ncx"))
827   ##開き方向指定
828   ocidSpineElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("page-progression-direction") stringValue:(strPageProgression))
829   ##【D-1】表紙ページの有無
830   if boolCoverPage is true then
831      #表紙ページ ID: cover-page
832      set ocidItemRef to refMe's NSXMLElement's alloc()'s initWithName:("itemref")
833      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("idref") stringValue:("cover"))
834      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("linear") stringValue:("yes"))
835      ocidSpineElement's addChild:(ocidItemRef)
836      (*
837   #表紙画像      ID: cover-image
838   set ocidItemRef to refMe's NSXMLElement's alloc()'s initWithName:("itemref")
839   ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("idref") stringValue:("cover-image"))
840   ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("linear") stringValue:("yes"))
841   ocidSpineElement's addChild:(ocidItemRef)
842   #表紙ページ ID: cover-page
843   set ocidItemRef to refMe's NSXMLElement's alloc()'s initWithName:("itemref")
844   ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("idref") stringValue:("cover-page"))
845   ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("linear") stringValue:("yes"))
846   ocidSpineElement's addChild:(ocidItemRef)
847      *)
848      ##【D-2】目次ページ
849      set ocidItemRef to refMe's NSXMLElement's alloc()'s initWithName:("itemref")
850      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("idref") stringValue:("toc"))
851      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("linear") stringValue:("yes"))
852      ocidSpineElement's addChild:(ocidItemRef)
853   end if
854   
855   #カウンタ初期化
856   set numCntPage to 1 as integer
857   #事前に取得している総ページ数回繰り返す
858   repeat numCntAllImage times
859      ###画像ファイルは連番処理 四桁のゼロサプレス
860      set strZeroSup to "0000" as text
861      set strSeroSup to (strZeroSup & (numCntPage as text)) as text
862      set strSeroSup to (text -4 through -1 of strSeroSup) as text
863      set strSetFileID to (strBaseFileName & strSeroSup) as text
864      ##ファイル名をitemrefとして登録
865      set ocidItemRef to refMe's NSXMLElement's alloc()'s initWithName:("itemref")
866      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("idref") stringValue:(strSetFileID))
867      ocidItemRef's addAttribute:(refMe's NSXMLNode's attributeWithName:("linear") stringValue:("yes"))
868      if boolProgression is true then
869         if numCntPage = 1 then
870            log "spineから1ページ目を抜きます"
871         else
872            ##ページ要素itemrefをspineの子要素に追加
873            ocidSpineElement's addChild:(ocidItemRef)
874         end if
875      else
876         ##ページ要素itemrefをspineの子要素に追加
877         ocidSpineElement's addChild:(ocidItemRef)
878      end if
879      set numCntPage to numCntPage + 1 as integer
880   end repeat
881   ##################
882   #【E】ガイドguide
883   (* referenceのtypeの要素
884toc(Table of Contents): 目次へのリンク。
885cover: 書籍の表紙ページへのリンク。
886title-page: 書籍のタイトルページへのリンク。
887colophon: 制作者や印刷情報を含むページへのリンク。
888acknowledgements: 著者への謝辞が含まれるページへのリンク。
889dedication: 書籍の献辞が含まれるページへのリンク。
890*)
891   set ocidGuideElement to refMe's NSXMLElement's alloc()'s initWithName:("guide")
892   #【E-1】目次追加
893   set ocidReferenceElement to (refMe's NSXMLElement's alloc()'s initWithName:("reference"))
894   ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("toc"))
895   ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("toc.xhtml"))
896   ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("title") stringValue:("目次"))
897   ocidGuideElement's addChild:(ocidReferenceElement)
898   ##【E-2】表紙ページの有無 設定依存
899   if boolCoverPage is true then
900      set ocidReferenceElement to (refMe's NSXMLElement's alloc()'s initWithName:("reference"))
901      #      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("cover"))
902      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("cover-page"))
903      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:("cover.xhtml"))
904      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("title") stringValue:("表紙"))
905      ocidGuideElement's addChild:(ocidReferenceElement)
906      ##1ページ目指定
907      set strStartFileName to (strBaseFileName & "0001.xhtml") as text
908      set ocidReferenceElement to (refMe's NSXMLElement's alloc()'s initWithName:("reference"))
909      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("other.reader-start-page"))
910      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strStartFileName))
911      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("title") stringValue:("最初のページ"))
912      ocidGuideElement's addChild:(ocidReferenceElement)
913      ##1ページ目指定
914      set ocidReferenceElement to (refMe's NSXMLElement's alloc()'s initWithName:("reference"))
915      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("type") stringValue:("text"))
916      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("href") stringValue:(strStartFileName))
917      ocidReferenceElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("title") stringValue:("最初のコンテンツ"))
918      ocidGuideElement's addChild:(ocidReferenceElement)
919   end if
920   
921   ##################
922   #↑からの各子要素をセット
923   ## 【B】メタ部を【A】のROOTエレメントに追加
924   ocidRootElement's addChild:(ocidMetaDataElement)
925   ## 【C】manifest部を【A】のROOTエレメントに追加
926   ocidRootElement's addChild:(ocidManifestElement)
927   ## 【D】spine部を【A】のROOTエレメントに追加
928   ocidRootElement's addChild:(ocidSpineElement)
929   ## 【E】ガイド部を【A】のROOTエレメントに追加
930   ocidRootElement's addChild:(ocidGuideElement)
931   ## 【A】をROOTエレメントをセットしてXMLとする
932   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
933   ocidOutPutXML's setVersion:"1.0"
934   ocidOutPutXML's setCharacterEncoding:"UTF-8"
935   ### 【A】をテキストにして
936   set ocidSaveStrings to ocidOutPutXML's XMLString()
937   ###改行コードを指定して
938   ocidSaveStrings's appendString:(linefeed)
939   ##保存
940   set listWritetoUrlArray to ocidSaveStrings's writeToURL:(ocidOptFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
941   ####################################
942   ###◆ 【3-4】toc.ncx 主に閲覧者が必要な情報や
943   ##ページや項目の順番等を指定する
944   ##マルチメディア系やアクセシビリティ要素もここで指定する
945   ###ファイルパス
946   ##Pageの場合
947   ##   set ocidNcxFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("epb.ncx") isDirectory:false
948   ##一般的な命名
949   set ocidNcxFilePathURL to ocidOPSDirPathURL's URLByAppendingPathComponent:("toc.ncx") isDirectory:false
950   ######【A】ROOTのエレメント 4つの子要素がある
951   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"ncx"
952   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("version") stringValue:("2005-1"))
953   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("http://www.daisy.org/z3986/2005/ncx/"))
954   ######【B】head メタ情報部分
955   set ocidHeadElement to refMe's NSXMLElement's alloc()'s initWithName:("head")
956   ##【B-1】uid
957   ###エレメント名meta
958   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
959   ##アトリビュートを設定して
960   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dtb:uid"))
961   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strUUID))
962   ##親要素の【B】head に追加する
963   ocidHeadElement's addChild:(ocidMetaElement)
964   ##◆【B-2】depth
965   ###エレメント名meta
966   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
967   ##アトリビュートを設定して
968   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dtb:depth"))
969   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:("1"))
970   ##親要素の【B】head に追加する
971   ocidHeadElement's addChild:(ocidMetaElement)
972   ##◆【B-3】totalPageCount
973   set strCntAllImage to numCntAllImage as text
974   ###エレメント名meta
975   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
976   ##アトリビュートを設定して
977   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dtb:totalPageCount"))
978   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strCntAllImage))
979   ##親要素の【B】head に追加する
980   ocidHeadElement's addChild:(ocidMetaElement)
981   ##◆【B-4】maxPageNumber
982   ###エレメント名meta
983   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
984   ##アトリビュートを設定して
985   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dtb:maxPageNumber"))
986   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strCntAllImage))
987   ##親要素の【B】head に追加する
988   ocidHeadElement's addChild:(ocidMetaElement)
989   ##◆【B-5】作成日
990   set strSetDate to doGetDateNo("yyyy-MM-dd") as text
991   ###エレメント名meta
992   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
993   ##アトリビュートを設定して
994   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dc:date"))
995   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strSetDate))
996   ##親要素の【B】head に追加する
997   ocidHeadElement's addChild:(ocidMetaElement)
998   ##◆【B-6】修正日
999   set strSetDate to doGetDateNo("yyyy-MM-dd'T'HH:mm:ss'Z'") as text
1000   ###エレメント名meta
1001   set ocidMetaElement to refMe's NSXMLElement's elementWithName:("meta")
1002   ##アトリビュートを設定して
1003   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("dc:modified"))
1004   ocidMetaElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("content") stringValue:(strSetDate))
1005   ##親要素の【B】head に追加する
1006   ocidHeadElement's addChild:(ocidMetaElement)
1007   ######【C】docTitle タイトル
1008   ##エレメント名docTitle
1009   set ocidTitleElement to refMe's NSXMLElement's alloc()'s initWithName:("docTitle")
1010   ##子要素のtext
1011   set ocidTextElement to refMe's NSXMLElement's elementWithName:("text")
1012   ##子要素textにドキュメント名を値として設定して
1013   ocidTextElement's setStringValue:(strDocumentTitle)
1014   ##CのdocTitleエレメントに子要素として追加する
1015   ocidTitleElement's addChild:(ocidTextElement)
1016   ######【D】docAuthor 作者 著者
1017   ##エレメント名 docAuthor
1018   set ocidAuthorElement to refMe's NSXMLElement's alloc()'s initWithName:("docAuthor")
1019   ##子要素のtext
1020   set ocidTextElement to refMe's NSXMLElement's elementWithName:("text")
1021   ##子要素textに作者情報を値として設定して
1022   ocidTextElement's setStringValue:(strAuthor)
1023   ##DのdocAuthorエレメントに子要素として追加する
1024   ocidAuthorElement's addChild:(ocidTextElement)
1025   ######【E】navMap navMapは閲覧時の順番を指定するので表紙イメージの設定とは異なる
1026   set ocidMapElement to refMe's NSXMLElement's alloc()'s initWithName:("navMap")
1027   #navMapの子要素navPoint
1028   set ocidNavPointElement to refMe's NSXMLElement's elementWithName:("navPoint")
1029   ##navPointのアトリビュート カバー表紙を最初のページとして読み順指定する
1030   ocidNavPointElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("id") stringValue:("navpoint-1"))
1031   ocidNavPointElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("playOrder") stringValue:("1"))
1032   ##【E-1】 navLabel ↑このnavPointの意図するラベル名
1033   set ocidNavLabelElement to refMe's NSXMLElement's elementWithName:("navLabel")
1034   set ocidTextElement to refMe's NSXMLElement's elementWithName:("text")
1035   ocidTextElement's setStringValue:(strLabelTitle)
1036   ##ラベルテキストをnavLabelに子要素として追加
1037   ocidNavLabelElement's addChild:(ocidTextElement)
1038   ##↑追加したラベルをnavPointに子要素として追加
1039   ocidNavPointElement's addChild:(ocidNavLabelElement)
1040   ##【E-2】contentはnavPointとして指定するファイルのリソースパス
1041   set ocidNavContentElement to refMe's NSXMLElement's elementWithName:("content")
1042   ###表紙設定ありの場合は
1043   if boolCoverPage is true then
1044      ##アトリビュートでパス指定する =表紙ページ
1045      ocidNavContentElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:("cover.xhtml"))
1046   else
1047      ##見開き調整ありの場合は
1048      if boolProgression is true then
1049         set strStartFileName to (strBaseFileName & "0002.xhtml") as text
1050         ocidNavContentElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:(strStartFileName))
1051      else
1052         set strStartFileName to (strBaseFileName & "0001.xhtml") as text
1053         ocidNavContentElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("src") stringValue:(strStartFileName))
1054      end if
1055   end if
1056   ##contentをnavPointに子要素として追加
1057   ocidNavPointElement's addChild:(ocidNavContentElement)
1058   ##複数のnavPointを指定する場合はこの下に追加していく
1059   ###navPointをnavMapに子要素として追加
1060   ocidMapElement's addChild:(ocidNavPointElement)
1061   ## ↑からの子要素をセット
1062   ##【A】に【B】を追加
1063   ocidRootElement's addChild:(ocidHeadElement)
1064   ##【A】に【C】を追加
1065   ocidRootElement's addChild:(ocidTitleElement)
1066   ##【A】に【D】を追加
1067   ocidRootElement's addChild:(ocidAuthorElement)
1068   ##【A】に【E】を追加
1069   ocidRootElement's addChild:(ocidMapElement)
1070   ## ↑からのROOTエレメントをセットしてXMLとする
1071   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
1072   ocidOutPutXML's setVersion:"1.0"
1073   ocidOutPutXML's setCharacterEncoding:"UTF-8"
1074   ###XML形式のテキストに出力
1075   set ocidSaveStrings to ocidOutPutXML's XMLString()
1076   ###改行コードを指定して
1077   ocidSaveStrings's appendString:(linefeed)
1078   ##保存 これでCNXファイルの出来上がり
1079   set listWritetoUrlArray to ocidSaveStrings's writeToURL:(ocidNcxFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
1080   
1081   #################################################################
1082   ###   【2】META-INF ファイル: container.xml com.apple.ibooks.display-options.xml
1083   set ocidMetaDirPathURL to ocidEpubDirPathURL's URLByAppendingPathComponent:("META-INF") isDirectory:true
1084   ##################
1085   ###◆【2-1】container.xml
1086   ###ファイルのパス
1087   set ocidContainerFilePathURL to ocidMetaDirPathURL's URLByAppendingPathComponent:("container.xml") isDirectory:false
1088   ###【A】ROOT エレメント
1089   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"container"
1090   ##【A】にアトリビュートを追加
1091   ocidRootElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("version") stringValue:("1.0"))
1092   ##【A】にネームスペースを追加
1093   ocidRootElement's addNamespace:(refMe's NSXMLNode's namespaceWithName:("") stringValue:("urn:oasis:names:tc:opendocument:xmlns:container"))
1094   ###【B】子要素 rootfiles エレメント
1095   set ocidRootFilesElement to refMe's NSXMLElement's alloc()'s initWithName:"rootfiles"
1096   ###【C】Bの子要素 rootfileノード
1097   set ocidRootFilesNode to refMe's NSXMLElement's alloc()'s initWithName:"rootfile"
1098   ##【C】にアトリビュートを追加
1099   ocidRootFilesNode's addAttribute:(refMe's NSXMLNode's attributeWithName:("full-path") stringValue:("OPS/content.opf"))
1100   ocidRootFilesNode's addAttribute:(refMe's NSXMLNode's attributeWithName:("media-type") stringValue:("application/oebps-package+xml"))
1101   ## ↑からの子要素をセット(【B】に【C】を追加)
1102   ocidRootFilesElement's addChild:(ocidRootFilesNode)
1103   ## ↑からの子要素をセット(【A】に【B】を追加)
1104   ocidRootElement's addChild:(ocidRootFilesElement)
1105   ## ↑からのROOTエレメントをセットしてXMLとする  【A】をXMLドキュメントに
1106   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
1107   ocidOutPutXML's setVersion:"1.0"
1108   ocidOutPutXML's setCharacterEncoding:"UTF-8"
1109   ###XML形式のテキストに出力
1110   set ocidSaveStrings to ocidOutPutXML's XMLString()
1111   ###改行コードを指定して
1112   ocidSaveStrings's appendString:(linefeed)
1113   ##保存
1114   set listDone to ocidSaveStrings's writeToURL:(ocidContainerFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
1115   
1116   ##################
1117   ###◆   【2-2】com.apple.ibooks.display-options.xml
1118   ##ファイルパス
1119   set ocidContainerFilePathURL to ocidMetaDirPathURL's URLByAppendingPathComponent:("com.apple.ibooks.display-options.xml") isDirectory:false
1120   ###【A】ROOT エレメント
1121   set ocidRootElement to refMe's NSXMLElement's alloc()'s initWithName:"display_options"
1122   ###【B】子要素 platform エレメント
1123   set ocidPlatformElement to refMe's NSXMLElement's alloc()'s initWithName:("platform")
1124   ###【B】にアトリビュートを追加
1125   ocidPlatformElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("*"))
1126   ###【C】Bの子要素としてのoption エレメント
1127   set ocidOptionElement to refMe's NSXMLElement's elementWithName:("option")
1128   ###【C】にアトリビュートを追加
1129   ocidOptionElement's addAttribute:(refMe's NSXMLNode's attributeWithName:("name") stringValue:("specified-fonts"))
1130   ###【C】にテキストの値を設定
1131   ocidOptionElement's setStringValue:("false")
1132   ## 子要素をセット 【C】を【B】に追加
1133   ocidPlatformElement's addChild:(ocidOptionElement)
1134   ## ↑からの子要素をセット 【B】を【A】に追加
1135   ocidRootElement's addChild:(ocidPlatformElement)
1136   ## ↑からのROOTエレメントをセットしてXMLとする 【A】をXMLドキュメントにする
1137   set ocidOutPutXML to refMe's NSXMLDocument's alloc()'s initWithRootElement:(ocidRootElement)
1138   ocidOutPutXML's setVersion:"1.0"
1139   ocidOutPutXML's setCharacterEncoding:"UTF-8"
1140   ###XML形式のテキストに出力
1141   set ocidSaveStrings to ocidOutPutXML's XMLString()
1142   ###改行コードを指定して
1143   ocidSaveStrings's appendString:(linefeed)
1144   ##保存
1145   set listDone to ocidSaveStrings's writeToURL:(ocidContainerFilePathURL) atomically:true encoding:(refMe's NSUTF8StringEncoding) |error|:(reference)
1146   
1147   return {(first item of listDone), ocidEpubDirPathURL}
1148end doMakeEpub
1149
1150##############################
1151# 今の日付日間 テキスト
1152on doGetDateNo(argDateFormat)
1153   set ocidDate to current application's NSDate's |date|()
1154   set ocidNSDateFormatter to current application's NSDateFormatter's alloc()'s init()
1155   ocidNSDateFormatter's setLocale:(current application's NSLocale's localeWithLocaleIdentifier:"ja_JP_POSIX")
1156   set ocidTimeZone to refMe's NSTimeZone's alloc()'s initWithName:"Asia/Tokyo"
1157   ocidNSDateFormatter's setTimeZone:(ocidTimeZone)
1158   ocidNSDateFormatter's setDateFormat:(argDateFormat)
1159   set ocidDateAndTime to ocidNSDateFormatter's stringFromDate:ocidDate
1160   set strDateAndTime to ocidDateAndTime as text
1161   return strDateAndTime
1162end doGetDateNo
1163
1164
1165##############################
1166# 無圧縮ZIP
1167on doMakeZip(aliasDirPath)
1168   
1169   ####構造ファイルの名称を取得する
1170   set aliasFolderPath to aliasDirPath as alias
1171   tell application "Finder"
1172      tell folder aliasFolderPath
1173         set listContentsAlias to name of every item as list
1174         set strDirName to name as text
1175      end tell
1176   end tell
1177   ####コマンドライン用に第一階層の項目をテキストにする
1178   set strDirList to ("") as text
1179   set strExtension to (missing value)
1180   repeat with itemName in listContentsAlias
1181      set strItemName to itemName as text
1182      set strDirList to (strDirList & "\"" & strItemName & "\" ") as text
1183      #拡張子判定
1184      if strItemName is "xl" then
1185         set strExtension to "xlsx" as text
1186      else if strItemName is "ppt" then
1187         set strExtension to "pptx" as text
1188      else if strItemName is "word" then
1189         set strExtension to "docx" as text
1190      else if strItemName is "OPS" then
1191         set strExtension to "epub" as text
1192      end if
1193   end repeat
1194   if strExtension = (missing value) then
1195      return "フォルダの構造に誤りがあります"
1196   end if
1197   ###
1198   set strCR to ("" & return & "") as text
1199   #パス
1200   tell application "Finder"
1201      set aliasContainerDirPath to (container of aliasFolderPath) as alias
1202   end tell
1203   set strContainerDirPath to (POSIX path of aliasContainerDirPath) as text
1204   set strDirPath to (POSIX path of aliasFolderPath) as text
1205   #dot_clean実行
1206   set theComandText to ("/usr/sbin/dot_clean -n -m  -v  \"" & strDirPath & "\"") as text
1207   do shell script theComandText
1208   #FindeでDS_Storeを除去
1209   set theCmdCom to ("/usr/bin/find \"" & strDirPath & "\" -name \".DS_Store\" -depth -exec rm {} \\;") as text
1210   do shell script theCmdCom
1211   #移動
1212   set strCommandText to ("/usr/bin/cd  \"" & strDirPath & "\"") as text
1213   log strCommandText
1214   do shell script strCommandText
1215   #移動
1216   set strCommandText to ("pushd \"" & strDirPath & "\"") as text
1217   log strCommandText
1218   do shell script strCommandText
1219   #圧縮実行
1220   set strCommandText to ("pushd \"" & strDirPath & "\" && '/usr/bin/zip' -rX \"../" & strDirName & "." & strExtension & "\" " & strDirList & "") as text
1221   log strCR & strCommandText & strCR
1222   do shell script strCommandText
1223   
1224   
1225   
1226   
1227   return true
1228   
1229end doMakeZip
AppleScriptで生成しました