gpt4 book ai didi

PDFSharp 转换问题

转载 作者:行者123 更新时间:2023-12-02 06:29:25 26 4
gpt4 key购买 nike

发现 PDFSharp 在使用比例变换以不同比例绘制时存在问题。

在此示例中,我们以不同比例绘制两个矩形,从 FixedDocumentSequence 生成 XPS,最后使用 PDFsharps XPS 转换器将 XPS 转换为 PDF。

var visual = new DrawingVisual();
DrawingContext dc = visual.RenderOpen();

// Setup transformations.
dc.PushTransform(new TranslateTransform(0, 1122.0));
dc.PushTransform(new ScaleTransform(3.77857136726379, -3.77857136726379));
dc.PushTransform(new TranslateTransform(-1719.41186523438, -1410.32360839844));
dc.PushTransform(new ScaleTransform(0.0117647061124444, 0.0117647061124444));

// Draw red rectangle.
var redPen = new Pen(Brushes.Red, 1);
var rectGeo1 = new RectangleGeometry(new Rect(160000, 130000, 8000, 5000));
dc.DrawGeometry(Brushes.Transparent, redPen, rectGeo1);

// Pop two transformations.
dc.Pop();
dc.Pop();

// Draw blue rectangle.
var bluePen = new Pen(Brushes.Blue, 0.5);
var rectGeo2 = new RectangleGeometry(new Rect(12, 12, 150.9408, 107.088539));
dc.DrawGeometry(Brushes.Transparent, bluePen, rectGeo2);
dc.Close();

// Generate XPS from DocumentSequence.
var a3Size = new Size(1587, 1123);
var docSeq = CreateDocumentSequence(a3Size, visual);
string dirPath = @"C:\Temp\";
string xpsFilePath = dirPath + "test.xps";
string pdfFilePath = dirPath + "test.pdf";
WriteXpsFile(docSeq, xpsFilePath);

// Generate PDF from XPS (PdfSharp)
XpsConverter.Convert(xpsFilePath, pdfFilePath, 0);

完整的程序可以在 here 找到和VS解决方案here .

红色矩形预计与蓝色矩形的右上角对齐。这就是我们在查看生成的 XPS 时得到的结果:

XPS screenshot

但是在生成的 PDF 中,我们在两个矩形之间发现了间隙。

enter image description here

Close-up

当绘制距原点很远的距离时,问题最为明显,在本例中,红色矩形以 1:85 的比例放置在 160000;130000 处。从原点绘制的距离越长,间隙就越大,这可能是精度/舍入误差吗?

我尝试解决这个问题,但没有成功。任何帮助查找原因的帮助将不胜感激!请注意,我不确定问题是否出在 PDFSharp 渲染或 XPS 转换上。

我正在使用PDFSharp 1.31 (较新的版本不包括 XPS 支持)。

包含此示例的完整 Visual Studio 解决方案(包括 PDFSharp 库)已可用 here .

最佳答案

找到原因了,PDFSharp在生成PDF时将变换矩阵值四舍五入到小数点后4位,这在这种情况下是不够的。

为了提高精度,我将 PdfContentWriter 中的 4 位占位符更改为 8 位占位符:

enter image description here

这是生成的 PDF 中的差异(运行调试时的详细模式):

enter image description here

这会产生正确渲染的 PDF:

enter image description here

关于PDFSharp 转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40783774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com