標準の Avery スタイルのラベル シートに動的に作成されたラベルを印刷する必要がある ASP.Net Web アプリケーションに取り組んでいます (特定のサイズが 1 つあるため、全体的なレイアウトは 1 つだけです)。ラベルの行数は可変 (3 ~ 6 行) で、テキスト行またはグラフィック バーコード イメージのいずれかを含めることができます。
私が引き継いだ最初のカットでは、等幅フォントを使用してフォーマットの問題を軽減しましたが、ラベルに十分なテキストを収めることができず、顧客は不満を持っていました. 基本的にはフォーマットされたテキストでした。
私の次のバージョンでは、プロポーショナル フォントを使用してラベルをフォーマットするために、TABLE、DIV、CSS、および少しの JavaScript 計算を使用しました。まだ少し調整が必要ですが (ユーザーは印刷マージンを正しく設定し、印刷ヘッダーとフッターをオフにする必要がありました)、うまくいくように見えました。
ただし、異なるプリンターがテキストをレンダリングする方法にはいくつかのバリエーションがあるようです (WYS は WYG ではありません)。そのため、少なくとも 2 つの異なるプリンター (インクジェットとレーザー プリンター) を使用して異なるブラウザーでテストしましたが、一部のユーザーのラベルは、並ばないで。ページ設定ダイアログの余白を調整することでわずかな余白の変動を調整できますが、より困難な問題は、ラベル間の間隔がわずか 1 インチずれることです。ページの最後で、ラベルのテキストと画像がラベルの上部または下部からはみ出しています。
Word、Excel、または PDF 出力の生成に切り替えようとしていますが、これにはかなりの開発時間がかかり、印刷プロセスに余分な手順が追加される可能性があります。
では、さまざまな種類のプリンターで正確にレンダリングされる HTML/CSS レイアウトを行う方法について何か提案はありますか? 改行/単語区切りが少し異なっていてもあまり気にしませんが、各ラベル領域の左上隅を予測どおりに配置できるようにする必要があります。
現在、ラベルは表のページに沿って流れており、セルのボックス モデルと内部 DIV を微調整して、高さが均一になるようにしています。各要素の絶対配置を使用することが最善の答えかもしれないと思いますが、ラベル要素の ASP.Net 生成のために、それも注意が必要です。それがうまくいくことが確実にわかっていれば、すべてを捨てて別の生成方法に行くよりも、試してみたいと思います。
若干の更新: 現在、絶対配置でいくつかのテストを行っています - 含まれているブロック要素の上と左の座標のみを設定します。これまでのところ、ページ上のオフセット (余白、用紙の位置合わせなど) には多少の違いがありますが、テストしたすべてのブラウザーとプリンターは、要素を互いに正確な位置に配置しました。PDFのヒントに感謝しますが、この方法で絶対配置を使用する際の追加の「落とし穴」を知っている人はいますか?
更新: 記録のために、iTextSharp を使用してラベル印刷部分を書き直しました。