html / pdf / docxのpandocでマークダウンのPNG画像のサイズを正しく設定


25

pandocでmarkdownを使用して、単一のドキュメントをhtml、pdf、docxに変換しようとしています。これは、数学のないテキストといくつかの画像のみを含む非常にシンプルなドキュメントです。画像はPNG形式です。これを使用した画像をマークダウンソースに含めます。

<div style="float:center" markdown="1">

![my caption](./figures/myimage.png)

</div>

そして次のようにコンパイルします:

# html
pandoc myarticle.md -c mystyle.css -o myarticle.html
# pdf
pandoc myarticle.md -V geometry:margin=1in -o myarticle.pdf
# docx
pandoc myarticle.md -o myarticle.docx

同じサイズのいくつかのPNG画像は HTML形式とPDF形式でサイズが異なることに気付きました。低解像度(72ピクセル/インチ)で250x256ピクセルのPNGは、ページ上でおおよそ正しいサイズとしてPDFに表示され、htmlでは適切なサイズで表示されますが、同じサイズ(250x256ピクセル)であるPNG高解像度(300ピクセル/インチ)は、PDF出力のページ上で小さいサイズに変更されます。指定したサイズのPNGイメージのセットを保持し、HTML / PDF / DOCX形式の両方でそのサイズで表示するようにします。

PDF / HTMLを作成するためだけに、docxの自動サポートを放棄します(または、その後の多くの手動書式設定を処理します)。

PDFや画像のPNGのサイズを変更しないようにpandocに指示して、正しい画像に表示させるにはどうすればよいですか?ありがとう。


2
300dpiのですが、唯一の250x256pxはPNG すべきページには非常に小さいこと、それはいけませんか?(1インチ未満の正方形。)dpiが低いPNGは、ページ上で大きくなります。Pandocは、画像のサイズを決める際に、ピクセルサイズだけでなくdpi情報も考慮します。そして、そうではありませんか?おそらく、CSSを使用して、HTMLの高解像度画像をグローバルに縮小できます。
ジョンマクファーレン

1
@JohnMacFarlane:dpiを考慮に入れると、pandocの動作は正しいことがわかりますが、dpiを無視して絶対サイズに固執し、すべての画像に対して単一の高解像度PNGを保持できるようにします。これを行って画像の低解像度バージョンを作成する正しい方法ですか、それともpandocに画像の寸法のみを使用して解像度を無視させる方法はありますか?それは私の端から最も簡単だろう
user46976

回答:


17

HTMLのような形式で出力するために、寸法がピクセルに変換されます。--dpiオプションを使用して、インチあたりのピクセル数を指定します。デフォルトは96dpiです。

写真で最も一般的な要素を見つけて使用します。例外のみを変更します。


例:dpi、幅、高さ。

dpi情報を指定すると:

デフォルトを上書きするには、前述のとおり--dpiオプションを追加します。


ほとんどの写真に共通の高さまたは幅がある場合は、簡単に修正する必要があります。

たとえば、行を次のように変更しました。

![my caption](./figures/myimage.png){ width=250px }

または

![my caption](./figures/myimage.png){ height=256px }

または、ストレートHTMLマークアップでこれを行います。

<img src="./figures/myimage.png" alt="my caption" style="width: 250px;"/>

または

<img src="./figures/myimage.png" alt="my caption" style="height: 256px;"/>

比率は正確になります。


参照:Pandoc Readme

HTMLおよびEPUBの場合、幅と高さを除くすべての属性(ただし、srcsetとサイズを含む)はそのまま渡されます。他のライターは、出力形式でサポートされていない属性を無視します。

画像の幅と高さの属性は特別に扱われます。単位なしで使用する場合、単位はピクセルと見なされます。ただし、次のユニット識別子のいずれかを使用できます:px、cm、mm、in、inch、%。

LaTeXのようなページベースの形式で出力するために、寸法はインチに変換されます。HTMLのような形式で出力するために、寸法がピクセルに変換されます。--dpiオプションを使用して、インチあたりのピクセル数を指定します。デフォルトは96dpiです。

通常、%単位は使用可能なスペースに相対的です。たとえば、上記の例は<img href="file.jpg" style="width: 50%;" />(HTML)、\includegraphics[width=0.5\textwidth]{file.jpg} (LaTeX), or \externalfigure[file.jpg][width=0.5\textwidth](ConTeXt)にレンダリングされます。

一部の出力形式には、クラス(ConTeXt)または一意の識別子(LaTeX \ caption)、あるいはその両方(HTML)の概念があります。

幅または高さの属性が指定されていない場合、フォールバックは画像​​の解像度と画像ファイルに埋め込まれたdpiメタデータを調べることです。


3
{ width=100% }全体の画面/ページ/線幅のサイズに対する相対的な幅にも使用できます。
-rri​​emann

これはpandoc-crossrefs {#fig:refname}構文で使用できますか?
オアフィッシュ

1
自分のコメントに答える:{#fig:refname width=50%}動作します。
オオフィッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.