誰かがこの問題を解決したことを願っています。Googleでそれを持っている人を見たことがありません。
私は Python で xhtml2pdf を使用しており、ヘッダー、フッターを含む単純なドキュメントを生成しようとしています。コンテンツはタイトル付きのテキスト ブロックです。各コンテンツの周りに境界線を付けたいのですが、代わりに各子要素の周りに境界線を付けます。
ここに私のHTMLがあります
@page {
size: letter;
border: 0;
@frame header_frame {
-pdf-frame-content: header;
border: 0pt solid white;
left: .75in;
width: 7in;
top: .5in;
height: 1.5in;
}
@frame content_frame {
border: 0pt solid white;
left: .75in;
width: 7in;
top: 1.5in;
height: 7.5in;
}
@frame footer_frame {
-pdf-frame-content: footer;
border: 0pt solid white;
left: .75in;
width: 7in;
top: 9.5in;
height: 1in;
}
}
h1 {
padding-top: 5pt;
}
.desc {
margin-top: 3px;
margin-bottom: 3px;
padding: 3px;
border: 1px solid blue;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>TEST TEST TEST</title>
</head>
<body>
<div id="header">
<h1>HEADER</h1>
</div>
<div id="footer">
FOOTER
</div>
<div class="desc">
<div class="title">TITLE OF ARTICLE</div>
<span>TEST 2</span>
<div>TEST 3</div>
<table>
<tr>
<td>Test4</td>
<td>Test 5</td>
</tr>
</table>
</div>
</body>
</html>
xhtml2pdf
現時点ではコマンド ライン ツールを実行しているだけなので、表示する Python はありません。デバッグ モードで実行すると、XHTML DTD があるにもかかわらず、「xhtml = false」と表示されることに気付きました。これが違いを生むかどうかはわかりません。
これがブラウザに表示されるもので、pdfがどのように見えるかを大まかに示しています(もちろんフッターの場所は無視します):
代わりに私は得る:
編集: xhtml は渡すオプションであることがわかりましたが、古いバージョンの html5lib がインストールされていない限り、渡すことはできません。私の質問に対する答えは、このライブラリが積極的に維持されておらず、新しい解決策を見つける必要があるということです:-/