PDFへのMarkdown:いろいろなアプローチからの欠けている部分


私はこれを最初に言ってみましょう、MarkdownからPDFを作成する最良の方法は、WSYIWYG(何を参照してください何か)に最も近いですので、それは完璧ではありません.
これは現在、少なくとも1つのPDF固有の機能(そしておそらく可能性があります)ミス-テーブルの目次/ブックマーク.

機能要求:PDF出力のためにTOCを生成するオプションを加えてください -φ1778



Ognian
掲示される
今では、ヘッダーとフッターのページ番号の仕事では、私は必死にH 1 - H 7のヘッダーからのコンテンツのテーブルを生成するオプションを欠落してPDFファイルを生成する(すなわち、wkhtmltopdfのようにこれをやっている).TOCはPDFの開始時になければなりません、そして、それはクリック可能であるべきではありません(ページへのジャンプ)だけでなく、tocがどんなビューアのコンテンツビューでも表示されるように、アウトラインPDF要素を生成してください.この機能が適切な場所で実装されるなら、これは複雑に聞こえるかもしれませんが、それは複雑ではありません.
ここに投稿する前に、私はこれを達成するために、いくつかの回避策を試みました.
いくつかの行き止まり
  • CSS 3 TargetRenner (-)は長い時間前に提案しました、そして、いくつかの特殊化されたツールだけがそれをします、私がそれが若干の日クロムで実行されると思うためにあきらめた正直であるために、(参照問題は現在)です:https://bugs.chromium.org/p/chromium/issues/detail?id=368053 )
  • 生成されたPDFから目次を抽出して、序文を生成するツールまたはツールを見つけてください.PDFファイルを元のPDFの前にマージしてください.With https://github.com/qpdf/qpdf 私は読みやすく検索可能な“PDFテキストファイル”を生成することができたので、理論的には、テキストファイル内のヘッダーを見つけることが可能であり、逆の検索を介して追加されたコメントは、それが等であるwichページを見つけることができました.
  • すぐにこれを得るどんな機会?
    感謝
    オグニアン
    View on GitHub
    そして、あなたが使用方法を知っていれば、PDFを作成する最良のツールの一つは、Visual StudioのコードですMarkdown Preview Enhanced 適切に.(私はこれをAtomでも使えることに気がつきました)
    トリックは、マークダウンをプレビューするときにプレビュースペースを右クリックしてください
  • Open in browser , 微調整するInspect Element
  • Chrome (Puppeteer) >> PDF , ショートカットのPDFにエクスポートします.(あなたも必要ですPuppeteer )

  • カスタムCSSを使用できます。


    実際には、いくつかのCSSの印刷に固有の、あなたはそれをカスタマイズすることができますマークダウンプレビュー強化(MPE).
    現在推奨LESS .
    html, body {
      box-sizing: border-box;
      height: 100%;
      width: 100%;
    }
    
    .markdown-preview {
      box-sizing: border-box;
      position: relative;
    
      @media print, screen {
        section {
          display: flex;
          flex-direction: column;
    
          &[vertical-center] {
            min-height: 100%;
            justify-content: center;
          }
    
          &[horizontal-center] {
            align-items: center;
            text-align: center;
          }
        }
    
        section + *, h1 {
          page-break-before: always;
        }
    
        h1, h2, h3, h4, h5, h6 {
          page-break-after: avoid;
        }
    
        article {
          page-break-inside: avoid;
        }
      }
    }
    
    また、あなたはimport your own LESS .
    Importing other file types も可能です.

    HTMLの中のマークダウン


    これは、オープンダウンの後に少なくとも2つの新しい行を残すことによって、Markdownでそれをネイティブに可能です
    <div class="center">
    
    ## Hello World
    
    </div>
    

    Yaml FrontMatterによる操り人形のカスタマイズ


    https://shd101wyy.github.io/markdown-preview-enhanced/#/puppeteer?id=configure-puppeteer
    それで、私はこれを作りました.
    ---
    id: print
    class: 'title'
    puppeteer:
      margin:
        top:    2cm
        bottom: 2cm
        left:   2cm
        right:  2cm
    ---
    
    @import "/_styles/print.less"
    

    HTMLを越える


    実は、私は既にHTMLを越える方法を考え出しました
  • テンプレートエンジンによるMarkdownの拡張EJS vscodeの中でマークダウンの中で強調している素晴らしい構文があります
  • 非Markdown/HTML -ラテックスまたはコンテキスト-パンドック、またはネイティブ
  • PDF操作ライブラリいくつかの推奨事項は

  • pdfbox - ジャバJDKなしで実行することもできますjava -jar pdfbox-app-2.y.z.jar

  • pdf-lib - ノード.js

  • PyPDF2 - Python (PyPDF4 , 今)