WPF 응용 프로그램에서 일부 데이터를 나타 내기 위해 DataGrid를 사용하고 있습니다. PDFSharp를 사용하여 PDF로 DataGrid가있는 특정 WPF 창을 저장하는 기능에서 저장된 PDF를 작은보기 비율로 볼 때 DataGrid GridLines가 표시되지 않는 문제에 직면하고 있습니다. (첨부 된 이미지를 참조 PDF보기가 1백39%로 설정되었을 때만, 격자 눈금이 표시된다. 그러나, 작은 시야 %, 일부 그리드 선을 생략하자.)PDF로 저장하면 WPF DataGrid GridLines가 표시되지 않습니다.
![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를 throw합니다 메모리를 사용하여 프로그램 실행을 계속할 수 있습니다. " 그러나 응용 프로그램이 충돌하지 않습니다.
PDF 뷰어의 동작을 확인하기 위해 MS Word에서 여러 행과 열이있는 테이블을 생성하여 PDF로 저장했습니다. 이 경우 테이블 그리드 선은 작은보기 비율에서도 명확하게 볼 수 있습니다.
아무도 도와 줄 수 있습니까?
GridLines의 가시성이 PDF 뷰어의보기 비율 (Foxit Reader뿐만 아니라 Adobe Reader에서도 확인 됨)에 따라 달라 지므로 첫 번째 스 니핏이 벡터 형식의 표를 생성하지 않는다고 생각합니다. 앞에서 말했듯이, MS Word를 사용한 테스트는보기 비율이 무엇이든 관계없이 표 격자가 명확하게 보이기 때문에 벡터 형식으로 작성하고 저장해야합니다. –
나는 모든 축소 선이 낮은 줌 레벨에서 볼 수없는 벡터 형식의 여러 문서를 보았습니다. 일반적으로 6400 %의 확대/축소 수준에서 텍스트를 선택하려고 할 때 차이점을 알 수 있습니다. –