問題タブ [calibre]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - any2mobi コマンド ライン ツール (Calibre の一部) を使用して、HTML から mobi ファイルを作成するにはどうすればよいですか?
MAC OS X 10.5.5 を使用しています。電子書籍ファイルをある形式から別の形式に変換するためのツール、Calibre をインストールしました。GUI とコマンド ライン ツールがあります。コマンド ライン ツール「any2mobi」を実行して、HTML ファイルを TOC 付きの MOBI ポケット形式または Kindle AZW 形式に変換しようとしています。
「-bash: any2mobi: コマンドが見つかりません」というエラーが表示されます。明らかに、any2mobi は私の道にはありません。それはどこにある?検索してみましたが、空っぽでした。
Calibre のバージョン 0.6.0b6 をインストールしました。
android - BCDを除くvendor_idとproduct_idのみを使用するようにPythonUSBデバイスドライバーを変更します
ベンダーIDと製品IDのみでデバイスを識別し、BCDを除外するように、calibre(電子書籍管理プログラム)用のAndroidデバイスドライバーを変更しようとしています。
ドライバーはかなり単純なPythonプラグインであり、現在3つの数値すべてを使用するように設定されていますが、AndroidデバイスがカスタムAndroidビルド(Nexus Oneの場合はCyanogenMod)を使用すると、BCDが変更されるため、キャリバーは認識を停止します。
現在のコードは次のようになり、ベンダーIDの単純なリストがあり、製品IDとBCDが許可されています。
私が具体的に変更しようとしている行は次のとおりです。
つまり、NexusOneを識別するための行です。CyanogenMod5.0.5を実行している私のN1にはBCD0x226があり、リストに追加するだけでなく、認識プロセスからBCDを削除して、ベンダーIDが0x18d1で製品IDが0x4e11のデバイスがあれば0x4e12が認識されます。カスタムAndroidROMは、詳細が重要になるほど十分に変更されていません。
構文では、角かっこで囲まれたBCDが必要なようです。
これを編集して、そのフィールドのすべてに一致させるにはどうすればよいですか?
pdf - 追記をpdfにバッチ変換してトリミングします
私はこのデジタルの世界で生き残るのにかろうじて十分に知っています。
1ページのポストスクリプトファイル(グラフ/画像)がたくさんあります。PDFに変換して、自動的に狭いボックスにトリミングしたいと思います。私は今Windowsを使用しています(私もLinuxを使用しているので、Linux用のコードを投稿することを躊躇しないでください)
私は過去にGhostscriptgswin32c.exeとCalibrepdfmanipulate.exeを組み合わせることで成功しました。これはおそらく、ここの多くの人にとってなじみのあるアプローチです。
しかし、このアプローチにはいくつかの理由で問題があります。
64ビットのgswin64c.exeに「アップグレード」した後、1つの問題が発生しました。32ビットバージョンのgswin32c.exeはまだ私のシステムで動作するので、あまり文句を言うことはできません。
おそらく不適切にコーディングされたポストスクリプトファイルを処理しているときに、別の問題が発生しました。少なくとも2つの問題があるようですが、どちらが原因であるか、または両方が原因であるかはわかりません。1つの問題は、バウンディングボックスの行(%% BoundingBox:135 179 484 587など)が常に上から2番目の行に配置されるとは限らないことです。それが問題になる可能性があることを理解しています。もう1つの問題は、上の境界ボックスがGhostscriptの「縦」の向きに対応しているのに、トリミングが「横」の向きに従っていることです。私が特定していないさらに別の問題は、一部のファイルではトリミングが非常にランダムに見えることです。
だからここに私の32ビットアプローチ(高品質のファイルで機能します)が続き、64ビットの適応は機能しません(おそらく、 httpsを理解している場合、calibreによって提供されるパッチスクリプトではなく、私のマシンでいくつかのpypdfスクリプトを呼び出すためです: //bugs.launchpad.net/ubuntu/+source/calibre/+bug/800551およびhttp://www.mobileread.com/forums/archive/index.php/t-103097.html、しかし私は推測しているだけですとにかく回避策がわからない):
上記の32ビットアプローチは、PSTricksまたはMapleの標準2Dプロットドライバーによって生成されたPostscriptレベル3などの高品質ファイルで機能しますが、古いファイルなどでは機能しません。Mapleの古典的なプロットドライバーによって作成されたPostscriptレベル2(その場合)。
私はいくつかのそのようなファイルの回避策を見つけました。これは、(MiKTeX)LaTeXディストリビューションのepstopdfを使用することで構成されています。それらのMapleクラシックファイルで動作します。残念ながら、PSTricksやMatlabなどの他のソフトウェアを使用して数年前に生成した他のいくつかのポストスクリプトファイルでは機能しません。
したがって、いくつかの変換を行い、機能したものを選択する必要があります。私の生活を楽にする提案があればいいのにと思います。BoundingBoxとPortrait/Landscapeの問題を修正できれば、かなり満足できるはずです。
よろしくお願いします。Linuxの提案は受け入れられます。私の好みは、「return」キーを1回押すだけでさまざまなファイルを処理できる可能性のあるソリューションです。
そしてもちろん、私はロスレスタイプのトリミングを探しています。これは、バウンディングボックスを解釈することだけで構成され、(おそらく)低品質のpdfに変換することではありません。
編集:私は言うのを忘れました。gswin32c / pdfmanipulateを高品質レベル3のポストスクリプトファイルに適用すると、「bounding」という名前のファイルに次のような情報が入力されます。
%% BoundingBox:34128 567 667 %% HiResBoundingBox:34.364390 128.875004 566.054069 666.071980
上記の例では、ファイルはすでにほとんどトリミングされています。%%BoundingBoxと%%HiResBoundingBoxの間の近さに注意してください
しかし、低品質レベル2(またはそう主張している)のポストスクリプトファイルに適用すると、「バウンディング」ファイルは次のようになります。
%% BoundingBox:189 137 574 467 %% HiResBoundingBox:189.485994 137.843996 573.299983 466.668478
しかし、バウンディングボックスは実際には%% BoundingBoxである必要があります:135 179 484 587上記(135 179 484 587)は、postscriptファイル自体(コピー貼り付けによって2行目に移動)によって提供されるバウンディングボックスです。縦向きのときにGhostview/Ghostscriptによって解釈されるバウンディングボックスと一致します。
しかし、Ghostscriptでは完全に無視されます...
189 137574467がどこから来たのかわかりません---それは非常に間違っています...
編集2.ケンの質問に答えて、いくつかの点を明確にしたいと思います。
こんにちはケン、お返事ありがとうございます、
私の質問が不明確だった場合は申し訳ありません---それでもあなたはその要点を理解しているようです---あなたの質問を順番に取り上げさせてください:
なぜ2つのアプリケーションを使用しているのかわかりませんが、Ghostscriptだけで変換全体を実行できるはずです。
Ghostscriptですべてを行う方法が見つからなかったので、別の方法を使用しました。ここ、http://www.mobileread.com/forums/archive/index.php/t-72885.htmlなどでGhostscript / Calibrateの提案を見つけました。他の場所で試してみましたが、最近まで機能していました。
Ghostscriptですべてを行うことができないと言っているのではなく、単に方法が見つからなかったと言っているだけです。
「64ビットgswin64c.exeに「アップグレード」した後、1つの問題が発生しました。」問題が何であるかをまだ言っていませんが、バグとして報告しましたか?バグを報告しないと修正されません......
問題とバグレポートを説明するリンクをここに示しました:https ://bugs.launchpad.net/ubuntu/+source/calibre/+bug/800551、http : //www.mobileread.com/forums/archive/ index.php / t-103097.html、私の問題はまったく同じです。
PostScriptプログラムとコメントの間に混乱があるようです。'%'で始まるPostScriptプログラムの行はコメントであり、プログラムの動作には影響しません。したがって、BoundingBoxコメントは何もしません。
可能であれば、私は違うように頼みます。ポストスクリプトファイルを取り、%% Bounding Boxを削除し、保存してGhostviewで開きます。Ghostviewはエラーメッセージをスローし、バウンディングボックス情報を使用せずにそれを表示します。たとえば、バウンディングボックスでしっかりと囲まれているのではなく、多くの空白で囲まれている図です。そうです、少なくともGhostview内では、このコメントは何かをします。%% Bounding Boxを削除した後、Calibre / pdfmanipulateを使用してpdfをトリミングすると、%%BoundingBoxが機能する場合に誤ってトリミングされます。したがって、この「コメント」は、表示とトリミングのコンテキストで非常に役立ちます。
ファイルの2行目である必要はないことに注意してください。
アドビが推奨しています。アドビからの引用、
「2番目に必要なDSCヘッダーコメントはEPSファイルのサイズに関する情報を提供し、インクルードアプリケーションがEPSファイルを適切に変換およびクリップできるように存在する必要があります。これはバウンディングボックスのコメントです。」
http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf
アドビは「しなければならない」と言います。個人的には、適切にバインドされたepsからpdfを生成できる限り、それが必須であるかどうかを気にする必要はありません。
通常、GhostscriptはDSCコメントを無視しますが、ProcessDSCをtrueに設定すると、使用が非常に制限されます(主にページサイズを設定するためのBoundingBoxコメント)。
pdfmanipulateを使用すると、適切にトリミングされたpdfと不適切にトリミングされたpdfの間にすべての違いが生じます。
次に進みます。LaTeX ps2pdfを使用しているとのことですが、PostScriptファイルが既にある場合は、それをGhostscriptに送信してPDFに変換できます。この場合、ページの実際のバウンディングボックスを見つけるために、Ghostscriptを正確に何に使用しているのかわかりません。
はい。
「ロスレス」トリミングの意味は私にはわかりません。コンテンツをトリミングすると、空白だけであっても、明らかに何かを失うことになります。
つまり、トリミングプロセスで画像全体を「ラスタライズ」(またはそれが何と呼ばれていても、用語を知っているでしょう)したくないということです。切り抜かれたファイルの部分は私には役に立たないので、それほど大きな損失にはなりません。切り抜き内にあるファイルの部分は、元のファイルと同じ品質である必要があります。それが一般的な考え方です。
これについてのコメントはここにあります。これは私が有用な情報を見つけた場所の1つです 。http://www.charlietanksley.net/philtex/reading-pdfs-on-portables/
トリミングしたいサイズがわかっている場合は、1回のパスで変換を実行するのは簡単です。
いいえ、サイズがわかりません。そのため、ソフトウェアで計算してもらうためにこのような長さにします。Ghostscriptとepstopdfが常に最適なクロップに同意するとは限らないため、これは明らかに単純なことではありません。一部のファイルには適切ですが、他のファイルには適切ではありません。他のファイルには適切ですが、一部のファイルには適切ではありません...
サイズがわからない場合は、最初にBoundingBoxを抽出することで、Ghostscriptのみを使用して2パスで実行できます。これにより、バウンディングボックスの左下と右上の4つの数字が表示されます(私が正しく覚えている場合)。次に、「変換」PostScript操作を作成して、ページのコンテンツを左下に移動します(0,0、左下隅から開始します)。また、ページサイズを設定するためのページデバイスリクエストを作成します。サイズは、幅=右-左および高さ=上-下で指定されます。元のファイルをPostScript演算子とともにGhostscriptにフィードし、pdfwriteデバイスを選択すると、PDFファイルが取得されます。
バッチファイルの例があれば、便利です。私はpdfwriteに基づくいくつかの例を見てきましたが、私が試したものはどれもうまくいきませんでした。悪魔は詳細に宿っています。
バウンディングボックスに関する限り、それはバグであるか、ファイルがマークを付けている可能性があり、外側の場所で白いインクを使用している可能性があります。この場合、バウンディングボックスデバイスはそれをページコンテンツの一部と見なします。そうではないことがわかるかもしれませんが、デバイスはできません。ページが最初に暗い背景で塗りつぶされたかどうか、およびコンテンツが白インクを使用して輪郭が描かれているかどうかを検討してください。
ファイルはすべてMatlab、Maple、PSTricksなどのソフトウェアで作成されており、%% Bounding Boxで指定された領域の外側に目に見えない白いマークが表示される可能性はほとんどありません(ただし、明らかに不可能ではありません)。
多くの場合、%% Bounding Boxコメントには必要なすべての情報が含まれているので、Ghostscript、Calibre、pdfwrite、またはその情報を使用する人を希望します。
私はあなたが何をしたいのかをもっと理解し、理想的にはあなたの問題のあるファイルを1つ以上見なければ、包括的な解決策を提供することはできません。
それは非常に簡単ですが、どうすれば閲覧用のポストスクリプトファイルを投稿できますか?420キロバイトです。
ケンに感謝します。実行可能な解決策が見つかることを願っています。
編集3.私は問題の大部分を特定しました。
私のポストスクリプトファイルには、最適な切り抜きにかなり近い次のバウンディングボックスがあります:%% BoundingBox:135 179 484 587
Ghostscript gswin64c / gswin32cを実行してバウンディングボックスを計算すると、
私は得る:
%% BoundingBox:145189475574 %% HiResBoundingBox:145.331574 189.485994 474.155986 573.299983
ps2pdfに続いてGhostscriptgswin64cを実行すると、つまり
次のバウンディングボックスが表示されます。
%% BoundingBox:189 137 574 467 %% HiResBoundingBox:189.395994 137.843996 573.299983 466.668478
したがって、問題は、ps2pdfを使用してpsからpdfに変換すると、バウンディングボックス情報が変更され、誤ったトリミングが発生することです。したがって、ps2pdfをeps2pdfのような他のものに置き換えると、ここでの問題が解決します。もちろん、他の解決策もあります。Kenとluserdroogが提案したように、Ghostcriptのみを含むソリューションは特に価値があります。彼らの非常に価値のある(そして私のクイックフィックスよりも優れた)提案を以下に示します。このようなものが機能しました:
epub - Kindlegen からの MOBI 出力の内部リンク/アンカーの問題
うまく構成された EPUB ファイルがあり、KindleGen を使用して mobi ファイルを生成しようとしています... EPUB は、内部リンク/アンカーである脚注/注釈でいっぱいです。すべてが適切にフォーマットされ、適切な HTML です ... しかし、Kindlegen で作成された MOBI ファイルがチョークします。
- Kindle Fire - すべて順調です
- Kindle - リンクが機能しない
- Kindle DX - リンクが機能しない
- Kindle iPhone - プレビューアではリンクが機能するが、iPhone では機能しない
- Kindle iPad - リンクが機能しない
キャリバーでコンバート、リンク等問題ありません。
使用しているコードは次のとおりです。
テキスト内の NOTE リンク:
脚注のコードは次のとおりです。
アンカータグを引っ張ってみたので:
しかし、それはうまくいきませんでした。
何かご意見は?提案?
build - カスタム コンパイラ用の waf ファイルを作成するにはどうすればよいですか?
make で魔法の記号を調べるのにうんざりして、 wafを試すことにしました。
caliber を使用して電子ブックを作成しようとしていますが、ファイルを取り込み、そのファイルを含むいくつかの引数を使用してプログラムを実行し、出力を生成する wscript を作成したいと考えています。Waf は、入力ファイルが出力よりも新しい場合にのみビルドする必要があります。
make では、次のような makefile を記述します。
% はファイルのベース名を表すマジック シンボルで、$ は出力ファイル名 (basename.epub) を表す記号です。
呼び出すmake soverflow.epub
と、soverflow.recipe で ebook-convert が実行されます。前回のビルドから .recipe が変更されていなければ、何もしません。
どうすればwafで同様のことを行うことができますか?
(なぜ waf なのか? それは私が既に知っている実際の言語を使用しているからです。これが scons で本当に使いやすいのであれば、それも良い答えです。)
python - Python、Calibre、URL リンクから exe を開く
Calibre プログラム内から .exe を開くことができるようにしたいと考えています。 http://calibre-ebook.com/ (Python でコード化されたオープンソース)
現在、詳細ウィンドウにはユーザー定義の URL が表示され、デフォルトのブラウザーで開きます。私が求めているのは、その URL を受け入れる何らかの方法であるため、代わりに exe ファイルを開くことができます。
または、Calibre 内から、つまりエントリの 1 つから exe ファイルを開く任意の方法、おそらくバッチ ファイルのサポートか何か
これが可能か、簡単か、難しいかはわかりませんが、誰かが私が見なければならない方向に私を向けることができれば、とても感謝しています.
(IT プロ、ただしプログラミング経験なし)
python - 正規表現を使用して一定量の空白を置き換えるにはどうすればよいですか?
Calibre を使用して PDF を MOBI に変換していますが、スペースでインデントされたコード ブロックの解釈に問題があります。ブロックには多くのスペースが含まれていますが、その量はさまざまです。一部の行は、31 スペース分インデントされています。
Calibre では、書籍が変換される前に、3 つの正規表現で検索と置換を行うことができます。
これは私が試したものです。
と置換する:
問題は、スペースの1つだけを置き換えることです。それらをすべて同じ量の に置き換えてください
。
最初のグループなどの遅延バージョンも試しました。
これは正規表現が不十分なケースの 1 つですか? この正規表現エンジンは Python の標準だと思います。
python - 単一のタグまたはカテゴリからの Google Reader API リスト フィード
読み取りリストの特定のタグまたはカテゴリの下にあるすべてのアイテムを取得するための Python スクリプト (実際にはキャリバー レシピ) を作成しています。カテゴリからアイテム全体を取得することはできますが、フィードごとにアイテムを取得したいので、特定のカテゴリの下にファイルされたフィードを一覧表示する方法が必要です (クリックしたときに Google リーダー UI が行うのと同じように)フォルダー上)。それを行うための API が見つかりません。助言がありますか?ありがとう。