前に作ろうとしてから3年ぐらい経っている感じ。imageio部分を削るのとvelocityを使うところまではできた。
MainActivity以外からリソースへのアクセスがしたい。
String jarPathからContext jarPath
AozoraEpub3ではmainからjarファイルが実行しているパスを各クラスに渡して、テンプレートファイルや設定ファイルを読み込んでいる。アンドロイドでは、リソースファイルはresフォルダーやassetsフォルダーで管理している。
jarpathからresやassetsに書き換える必要がある。
resやassetsにアクセスするのは。
String jarPath =""; AozoraGaijiConverter gaijiconverter; gaijiconverter = new AozoraGaijiConverter(jarPath); gaijiconverter = new AozoraGaijiConverter(this); public AozoraGaijiConverter(String jarPath) throws IOException { //初期化 //ファイルチェック取得 IVS優先 this.loadChukiFile(new File(jarPath+"chuki_ivs.txt"), chukiUtfMap); this.loadChukiFile(new File(jarPath+"chuki_utf.txt"), chukiUtfMap); this.loadChukiFile(new File(jarPath+"chuki_alt.txt"), chukiAltMap); } public AozoraGaijiConverter(Context context) throws IOException { //初期化 //ファイルチェック取得 IVS優先 this.loadChukiFile(context.getAssets().open("chuki_ivs.txt"), chukiUtfMap); this.loadChukiFile(context.getAssets().open("chuki_utf.txt"), chukiUtfMap); this.loadChukiFile(context.getAssets().open("chuki_alt.txt"), chukiAltMap); }
chuki_alt.txt chuki_ivs.txt chuki_latin.txt chuki_tag.txt chuki_tag_suf.txt chuki_utf.txt
this.loadChukiFile(context.getAssets().open("chuki_ivs.txt"), chukiUtfMap); this.loadChukiFile(context.getAssets().open("chuki_utf.txt"), chukiUtfMap); this.loadChukiFile(context.getAssets().open("chuki_alt.txt"), chukiAltMap); BufferedReader src = new BufferedReader(new InputStreamReader(context.getAssets().open("chuki_tag.txt"), StandardCharsets.UTF_8)); src = new BufferedReader(new InputStreamReader(context.getAssets().open("chuki_tag_suf.txt"), StandardCharsets.UTF_8)); src = new BufferedReader(new InputStreamReader(context.getAssets().open("replace.txt"), StandardCharsets.UTF_8));
Epub3Writer writer = new Epub3Writer(this);
contextを渡すようにする
inputstreamからstring変換 stackoverflow.com
Velocity.mergeTemplateではファイルパスからテンプレートファイルを読み込むが、context.getAssets().openではinputstreamになるので Velocity.evaluateを使って、ファイルパスではなくテンプレートファイルのstringを渡すように変える。
Velocity.mergeTemplate(templatePath+OPS_PATH+CSS_PATH+TEXT_CSS_VM, "UTF-8", velocityContext, bw); String template = IOUtils.toString(context.getAssets().open(templatePath+OPS_PATH+CSS_PATH+TEXT_CSS_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); String template = inputStreemToString(context.getAssets().open(templatePath+OPS_PATH+CSS_PATH+TEXT_CSS_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(vmFilePath, "UTF-8", velocityContext, bw); String template = inputStreemToString(context.getAssets().open(vmFilePath), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(templatePath+OPS_PATH+XHTML_PATH+COVER_VM, "UTF-8", velocityContext, bw); String template = inputStreemToString(context.getAssets().open(templatePath+OPS_PATH+XHTML_PATH+COVER_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(templatePath+OPS_PATH+PACKAGE_VM, "UTF-8", velocityContext, bw); String template = inputStreemToString(context.getAssets().open(templatePath+OPS_PATH+PACKAGE_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(templatePath+OPS_PATH+XHTML_PATH+XHTML_NAV_VM, "UTF-8", velocityContext, bw); template = inputStreemToString(context.getAssets().open(templatePath+OPS_PATH+XHTML_PATH+XHTML_NAV_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(templatePath+OPS_PATH+TOC_VM, "UTF-8", velocityContext, bw); template = inputStreemToString(context.getAssets().open(templatePath+OPS_PATH+TOC_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(this.templatePath+OPS_PATH+XHTML_PATH+XHTML_HEADER_VM, "UTF-8", velocityContext, bw); String template = inputStreemToString(context.getAssets().open(this.templatePath+OPS_PATH+XHTML_PATH+XHTML_HEADER_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); //Velocity.mergeTemplate(this.templatePath+OPS_PATH+XHTML_PATH+XHTML_FOOTER_VM, "UTF-8", velocityContext, bw); String template = inputStreemToString(context.getAssets().open(this.templatePath+OPS_PATH+XHTML_PATH+XHTML_FOOTER_VM), StandardCharsets.UTF_8); Velocity.evaluate(velocityContext, bw, null, template); public Epub3ImageWriter(Context context) { super(context); }
androidでapche velocityは動くのだろうか 99nyorituryo.hatenablog.com View Binding codeforfun.jp androidでファイルの保存 99nyorituryo.hatenablog.com Storage Access Framework でドキュメントを保存する akira-watson.com