私は自分のグリッドを作成しようとしています(これは非常によく似ています:http://tinyurl.com/cdyre6k - ミリメートル)。ReportLabを使用したPython/PDFの作成 - パターン付きの自己作成のグリッドプリントが画面上でうまく表示されます
私はこれらのレポートを作成するためにReportLab/Python(opensource)を使用しています。以下は私のコードのスニペットです。画面で
、それはしかしGREAT!:
に見える、私は(はい、私はまた、プリンタの設定で手を加えました)プリンタにこれを送信する際には、いくつかの行を印刷し、他のものではありません(時には系統的で、パターンのような格子縞を印刷しますが、それ以外の場合は太い/細い線です;プリンタの出力は設定したストローク幅によって一貫します)。
私はそれを正しく印刷するために得ることができない...私はstrokewidth組み合わせのすべての種類を試してみましたが、プリンタのすべての種類は、組み合わせを設定!私は代替プリンタを試して、より良い結果を得ましたが、プリンタ設定を1200 dpi(CADレベルの印刷)以上に設定する必要があります。他のプリンタは600dpiに設定されています。そのSAME PRINTER(600dpi)では、以前の同僚が作成した文書を印刷して印刷します(彼はReportLabを使用していなかったため、コード/ソリューションは使用できません)。
何が起こっていますか?これはプリンターのエイリアシングの問題ですか?グリッドをビットマップ(または他の形式)に変換すると、私の役に立ちますか?どうすればこの問題を解決できますか(私の唯一の選択肢はPythonとReportLabを使用することです)? ReportLabのマニュアルは役に立ちませんでした。「Google」は役に立ちませんでした。以前のStackExchangeの質問は、この特定のトピックをカバーしていないようです。私は "1"にstrokewidthを設定すると、すべての行を印刷するグリッドを得ることができますが、マイナーグリッド線が太すぎます。
最終結果は、私が取り組んでいる折れ線グラフのためであり、ReportLabにはグラフ関数があることは分かっていますが、私のプロジェクトに必要なものはreportlabsグラフ/グリッド関数では分かりませんメジャー/マイナーラインを使って私自身のグリッドを作ることを余儀なくされました(多分私は何かを見逃して別のテクニックを開いていましたが、現在はプリンタではなくPDF形式でうまく見えます)。
何かアドバイスをいただきありがとうございます。
TIA、
-J
for i in decimal_range(0, _time, 1):
if (i % 5.0 == 0):
if (i % 25.0 == 0):
grid_pattern.add(shapes.Line(_temp_x,
(_temp_y + _height_of_box),
_temp_x,
(_temp_y + _height_of_box+4),
strokeWidth=1,
strokeColor=colors.black))
else:
pass
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=.12,
strokeColor=colors.pink))
_temp_x += 1 * mm
_temp_x = xorigin
for i in range(0, _mv, 1):
if (i % 5.0 == 0):
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
else:
grid_pattern.add(shapes.Line(_temp_x, _temp_y,
_temp_x + _width_of_box,
_temp_y, strokeWidth=.12,
strokeColor=colors.pink))
_temp_y += 1 * mm
UPDATE1
私はいくつかのポスター(およびReportLabのコミュニティ/メーリングリストによって推奨されているように "0" にストローク幅を設定しようとしています)は、次のようになります。
grid_pattern.add(shapes.Line(_temp_x, _temp_y, _temp_x,
(_temp_y + _height_of_box),
strokeWidth=0,
strokeColor=colors.pink))
これは、1つのピクセル幅の行を作成します。これも、PC上ではすばらしいものの、PDFではファンキーなパターンで印刷されます。
アップデート2 + SOLUTION
ReportLabのと私のコンピュータとの癇癪と引数のLOTSした後、それは私のPCまたはReportLabのではなかったが判明しました。それはプリンター(私は2つの完全に異なるプリンターを使用していたCanonとHP - モデルにもかかわらず) - 私は、プリンタを排除するのに十分なカバレッジがあると感じましたが、この問題にはさらにあります!続きを読む...
ReportLabは実際に線を描くわけではなく、線を描くようにレンダリングに指示するポストスクリプト線を追加するだけです。
私の初期のデバッグには、それが問題であるかどうかを確認するために使用していた色の変更が含まれていました - よく - 色をピンクから赤に変更しました(それほど変化はありませんでしたが、やはり私はと仮定しています)。問題として色を除外するために十分に変更しました)。
私は最近、プリンタが色をグレースケールに変換して式を使用し、その式が(私が見ていたような)アンチエイリアスの副作用を生み出す傾向があることを痛感しました。
解決策:グリッドの色を変更することでした。特定の色は他の色よりも優れています。これをテストするために、私はdownload hereという簡単なスクリプトを書いて、reportlabsの色に格納されたすべての色を使用してPDF文書を生成します。辞書 - 問題の原因となったサンプルグリッドを印刷し、RGB値を提供します。それは明らかに、すべての種類の色がいくつかのプリンタ(すべて異なっています)でうまく印刷されません - それはレッド/ピンクだけではありません...赤のような色がうまく印刷されたり、 。
ここで私が作成したこのPDFドキュメントを使用して、印刷(カラーとグレースケールの両方)と画面上でうまく見える色を見つけます。
恐怖のためにスクリプトをダウンロードしたくない場合は、少なくともPDFをチェックして自分のサンプルを印刷して、問題を再現できるかどうかを確認してください(私は600dpiで印刷していました。私はDPI /品質設定を立てれば、それはうまく印刷されましたが、標準設定は私に悲しみを引き起こしていました!)。
または
提案していただきありがとうございます。私は今すぐ試しています。私は調査結果とともに報告します。 –
ストロークの幅を0にしようとしましたが、パターンが悪くなりました。/。私は複数のプリンタで印刷を試みました - 同じ正確なパターン(私はそれが問題+私のコードを引き起こしているAdobe Readerであると仮定しているので)。それでも、印刷設定を行うと、グリッドを印刷することができます(前と同じ)。 ラインを太くすることはできません。ラインの中には、他のラインより少し暗く/濃く印刷されているものもあります。 他の提案はありますか? –
作成したサンプルPDFを共有する方法はありますか?また、「太い」と印刷したとすると、線幅をどれだけ増やしたと言えますか? –