2010/12/14

kdconvをソニーリーダー対応へバージョンアップしました

ソニーリーダーPRS-350に対し、MacOS XからもPDFファイルを転送できることが分かりましたので、kdconv をソニーリーダー対応へアップデートしました。github から取得可能で、最新版はv1.0.3になります。

kdconvは、画像で構成されたPDFファイルをKindleやソニーリーダで読みやすい解像度へ変換するためのプログラムです。

ソニーリーダー用に変更したい場合には '-f sonyreader' オプションを指定します。
% kdconf -f sonyreader input.pdf output.pdf
Kindle DX用に変換する場合は '-f kindledx' を指定します。-fオプションを指定しない場合、または、'-f kindle' を付けた場合にはKindle用に変換されます。この-fオプション追加に伴い、旧来Kindle DX用変換を指示するために使われていた-dオプションは obsolete になりました。

また、この版ではv1.0.2で混入させてしまった、「pdftkがインストールされている環境では、複数ページ文章の変換に失敗する」問題も修正されています。ご面倒おかけして申し訳ありません。

kdconv は、単一シェルスクリプトファイルで構成されています。git をインストールされていない方でも、ブラウザから直接ダウンロードすることが可能です。お気軽にご利用ください。

ご意見、ご感想などお待ちしております。よろしくお願い致します。

7 件のコメント:

  1. pdftkの日本語の問題で、投稿させていただいたものです。
    あれから、あれこれいじった末、PDFの画質を変化させることなく、PDFの「タイトル」、「著者名」、「作成者」、「サブジェクト」を挿入させることに成功しました。作成したPythonスクリプトを投稿しておきますので、もしよかったらお使いください。

    # Pythonでかかれています。ライブラリとしてはPdfrwとrepotlabを使ってます。(というか、pdfrwで付属であったスクリプトをちょこっといじっただけです)

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    import sys
    import os
    from optparse import OptionParser
    from pdfrw import PdfReader, PdfWriter, IndirectPdfDict
    import codecs

    def PDF_string_encoding(unicode_string):
    return codecs.BOM_UTF16_BE + unicode_string.encode("utf-16be")

    parser = OptionParser()
    parser.add_option("-f","--file",dest="inputname",help="input file")
    parser.add_option("-o","--output",dest="outputname",help="output file")
    parser.add_option("-t","--title",dest="title",help="title name")
    parser.add_option("-a","--author",dest="author",help="author name")
    parser.add_option("-c","--creator",dest="creator",help="creator name")
    parser.add_option("-s","--subject",dest="subject",help="subject")
    (opts,args) = parser.parse_args()

    inputs = opts.inputname
    assert inputs
    outfn = opts.outputname
    assert outfn
    writer = PdfWriter()
    #for inpfn in inputs:
    writer.addpages(PdfReader(inputs, decompress=False).pages)

    writer.trailer.Info = IndirectPdfDict(
    Title = PDF_string_encoding(unicode(opts.title,encoding='utf-8')),
    Author = PDF_string_encoding(unicode(opts.author,encoding='utf-8')),
    Subject = PDF_string_encoding(unicode(opts.subject,encoding='utf-8')),
    Creator = PDF_string_encoding(unicode(opts.creator,encoding='utf-8')),
    )
    writer.write(outfn)

    以上です。それでは。

    返信削除
  2. コメント、ならびに、スクリプトの公開、どうも有難うございます。
    将来、Pythonなどでスクリプトを書き直す機会がありましたら、是非、参考にさせていただきたいと思います。
    どうもありがとうございました。

    返信削除
  3. kindle3を購入しPDF最適かで調べていた所kdconvを知り非常に便利に使わせて頂いております。便利なツール有り難うございます。

    ただ当方10.6なのですが、mktempでエラーが出てtempディレクトリ作成に失敗している様でしたので、パラメータを"-d -t"と変更した所正常にディレクトリが作成できました。

    また細かい字のデータを倍のピクセルで144dpiで-tで実行すると、本文が極端に左したにズレて内容が殆どはみ出してしまいます。
    -gravity centerを削除すると、defaultの左上で出力されます。

    一旦jpegに出力してからresize以降を動かすと問題なさそうですが、標準サイズと異なり、本文が下地一杯に余白無しで配置されてしまいます。
    色々試しましたがわかりませでした。上記について大変お手数ですがアドバイス頂けたらと思います。お手隙の時にでも…

    よろしくお願い致します。

    返信削除
  4. cinq さん、ご利用ありがとうございます!
    mktemp の -d -t オプションの件、仰る通りバグです。申し訳ありません。教えていただいたとおりに修正させていただきました。

    144dpiでのズレの件、直ぐには原因と対策を思いつかないのですが、是非、環境を作成し試行してみます。即答できず、ごめんなさい。

    基調なご意見、感謝しております!

    返信削除
  5. 早速のお返事有難うございます。ずれる件ですがdpiが問題というより、サイズを大きくすると発生するようです。
    KindleDXで-tを指定してもズレてしまいます。

    お手数おかけしますが、宜しくお願い致します。

    返信削除
  6. cinq さん、どうも有難うございます!
    頂いたコメントのお陰で、問題が特定できました。バグです。ごめんなさい。
    近いうちに公開いたしますので、今暫くお待ちください。

    どうもありがとうございました。感謝いたします。

    返信削除
  7. 遅くなり申し訳ありません、cinqさんから教えていただきましたバグを修正しました版をv1.0.4として公開しました。お試し頂ければ有り難いです。

    今回のご連絡、どうもありがとうございました。大変助かりました。

    返信削除