私はWPFアプリケーションの一部のデータを表すためにDataGridを使用しています。 PDFSharpを使用してDataGridをPDFに変換する特定のWPFウィンドウを保存する機能では、保存されたPDFを小さな表示割合で表示すると、DataGrid GridLinesが表示されないという問題に直面しています。 (PDFビューが139パーセントに設定されている場合にのみ、グリッド線が表示され、添付画像を参照してください。しかし、小さい視野%で、一部のグリッド線を省略得る。)WPF DataGrid GridLinesがPDFとして保存されているときに表示されない
![139%](https://i.stack.imgur.com/ON6bv.png)
MemoryStream lMemoryStream = new MemoryStream();
Package package = Package.Open(lMemoryStream, FileMode.Create);
var doc = new System.Windows.Xps.Packaging.XpsDocument(package);
XpsDocumentWriter writer = System.Windows.Xps.Packaging.XpsDocument.CreateXpsDocumentWriter(doc);
VisualBrush sourceBrush = new VisualBrush(this);
DrawingVisual drawingVisual = new DrawingVisual();
using (var drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawRectangle(sourceBrush, null, new Rect(new Point(0, 0), new Point(this.ActualWidth, this.ActualHeight)));
}
writer.Write(drawingVisual);
doc.Close();
package.Close();
var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream);
XpsConverter.Convert(pdfXpsDoc, sFileName, 0);
私はそれがビジュアルが描画される品質と関係していると信じています。それから、私はDrawImageを使ってビジュアルをより高い解像度にするためにこのスニペットを試しました。ここでは抜粋です: - このスニペットは、グリッド線のように働いている
MemoryStream lMemoryStream = new MemoryStream();
Package package = Package.Open(lMemoryStream, FileMode.Create);
var doc = new System.Windows.Xps.Packaging.XpsDocument(package);
XpsDocumentWriter writer = System.Windows.Xps.Packaging.XpsDocument.CreateXpsDocumentWriter(doc);
double dpiScale = 600.0/96.0;
var renderBitmap = new RenderTargetBitmap(Convert.ToInt32(this.Width * dpiScale),
Convert.ToInt32(this.Height * dpiScale),
600.0,
600.0,
PixelFormats.Pbgra32);
renderBitmap.Render(this);
var visual = new DrawingVisual();
using (var dc = visual.RenderOpen())
{
dc.DrawImage(renderBitmap, new Rect(0, 0, this.Width, this.Height));
}
writer.Write(visual);
doc.Close();
package.Close();
var pdfXpsDoc = PdfSharp.Xps.XpsModel.XpsDocument.Open(lMemoryStream);
XpsConverter.Convert(pdfXpsDoc, _pdfFileName, 0);
はさらに小さく、視聴パーセンテージで表示されますが、それは私のアプリケーションは、PDF保存操作で立ち往生しても、それはメッセージで「不足System.OutOfMemoryExceptionにをスローしますプログラムの実行を続行するためのメモリ。 "ただし、アプリケーションがクラッシュすることはありません。
PDFビューアの動作を確認するために、MS Wordで複数の行と列を持つテーブルを生成し、PDFとして保存しました。その場合、テーブルグリッド線は、小さな表示パーセンテージでもはっきりと見えます。
誰もがこれを手伝ってくれますか?
GridLinesの可視性はPDFビューアの閲覧パーセンテージ(Adobe ReaderとFoxit Readerでチェック済み)に依存しているため、1番目のスニペットがベクトル形式のテーブルを作成するとは思わない。あなたが言ったように、MS Wordでのテストは、表示率が何であってもテーブルグリッドがはっきりと見えるので、ベクトル形式で作成して保存していなければなりません。 –
私はベクトル形式でいくつかの文書を見てきましたが、すべての細い線が低いズームレベルで見えるわけではありません。通常、6400%のズームレベルで、またはテキストを選択しようとしているときに差異を表示できます。 –