久しぶりの潜伏者、初めてのポスター。
現在、OxyPlot を使用してグラフを生成する WPF アプリを使用しています。生成されたグラフを ReportDocument (RDLC) にエクスポートし、CutePdf を使用して PDF として印刷したいと考えています。私はこれを成功させることができます。
現在、これを行うために取っているアプローチは、以下のコード スニペットを実行することです。
using (var memStream = new MemoryStream())
{
PngExporter.Export(PlotModel, memStream, 850, 700, OxyColors.White, 120);
var fromStream = Image.FromStream(memStream);
fromStream.Save(memStream, ImageFormat.Png);
imageArray = new byte[memStream.Length];
memStream.Seek(0, SeekOrigin.Begin);
memStream.Read(imageArray, 0, (int) memStream.Length);
}
var stringBytes = Convert.ToBase64String(imageArray);
これを RDLC に渡すには、メモリ ストリームを Base64String に変換し、それをパラメーターとして渡す必要があります。そのとおりです。
var parameter = new ReportParameter("Chart", stringBytes);
reportViewer.LocalReport.SetParameters(parameter);
ただし、これはすべてうまくいきますが、PDF の画像出力は、拡大すると信じられないほどぼやけてピクセル化されているように見えますが、ページの周囲のテキストは鮮明です.
画像をPNG/BMP/JPGとしてディスクに保存しようとしましたが、ぼやけた画像が返されるように見えるので、サイズの問題ではありません。
using (var stream = File.Create("testChart.png"))
{
var pngExporter = new PngExporter();
pngExporter.Export(PlotModel, stream);
}
私が何を意味するかを示すために、この投稿に PDFのコピーを添付しました。
ありがとう!