Pandocのエラー解決策覚書です。
Pandocの使い方はこちらです。
VSCodeでPandoc3の使い方(Windows/Mac)おすすめ本!?|neru
Pandocの使い方、覚書です。電子書籍作成にも便利ですよね。 2023年にPandocも3になりましたね。 昔に書いた記事ですが、少し整理してnoteに掲載します。 Pacdocの使い方の…
vscodeでpandoc 3の使い方/商用利用やライセンスは?Re:VIEWとSphinxとの比較
pandocの使い方覚書です。ePUBとHtmlの出力に主に利用しています。 pandocはmarkdown preview enhancedとあわせて使うと便利です。 Re:VIEWとpandocとSphinxの比較 pandoc…
Contents
Pandocのエラー
openBinaryFile: does not exist (No such file or directory)
openBinaryFile: does not exist (No such file or directory)
パスは正しいはずなのにこのエラーがでます。相対パスをフルパスにすると解決しました。
const epubCoverImagePath = path.join(__dirname, epubCoverImageRelativePath);
この1行は、2つの作業を行っています。
相対パスを絶対パスに変換する
その絶対パスを変数epubCoverImagePathに格納する
- __dirnameは、現在のスクリプトが実行されているディレクトリの絶対パスを表す特殊な変数です。
- epubCoverImageRelativePathは、metadata-epub.yamlファイルから読み取った相対パスです(例: “theme/cover.png”)。
- path.join()は、Node.jsのpathモジュールの関数で、引数で指定された複数のパス文字列を結合して1つの絶対パスを作成します。
- つまり、path.join(__dirname, epubCoverImageRelativePath)は、現在のディレクトリのパスとepubCoverImageRelativePathを組み合わせて、カバー画像ファイルの絶対パスを生成しています。
- その絶対パスがepubCoverImagePathに代入されます。
このように、相対パスではなく絶対パスを使うことで、スクリプトの実行環境に依存せずに、カバー画像ファイルの正しい場所を指定できるようになります。
[WARNING] This document format requires a nonempty element.
[WARNING] This document format requires a nonempty <title> element.
Defaulting to 'index' as the title.
To specify a title, use 'title' in metadata or --metadata title="...".
タイトルがないだけみたいです。タイトルをつけるとePUBではタイトルが表示されます。
---
title: "ePUB変換"
---
openBinaryFile: invalid argument (Invalid argument)
一括変換しようとした際に出たエラーです。なかなか解決策がなくフランス語のサイトをあさっていたら解決しました^^;。
openBinaryFile: invalid argument (Invalid argument)
pandoc *.md -o output.html
↓
pandoc $(dir *.md) -o output.html
サブフォルダもあわせて指定する場合はこう。
pandoc $(dir *.md) $(Get-ChildItem ./markdown/*.md) -o output.html
pandoc $(dir *.md) $(dir./markdown/*.md) -o output.html
En effet *.md n’est pas reconnu en powershell mais uniquement en shell sh ou bash.
https://forum.canardpc.com/threads/130205-Resolu-Utilisation-de-Pandoc-sous-windows
根本的なところではPowerShellではダメみたい。bashやshじゃないと。
bash --v
bash: The term 'bash' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
たしかにWindowsには入れてなかった。。
入れるのが面倒だったので、とりあえずWindowsならではのバッチファイルにして対応しました。
参考になれば幸いです。
コメント