PDF正常呈现,但是锯齿状边缘打印 - PDFSharp

时间:2012-06-19 16:18:57

标签: c# .net pdf printing pdfsharp

我有一个复杂的应用程序通过PDFSharp生成PDF。我遇到了一个很难解决的问题。

当渲染图像(文本也是图像)旋转时,生成的PDF看起来很好,但是打印时它有锯齿状边缘并且通常搞砸了 - 请参阅附件。

以下是相关代码:

// determine how big the image should be
double destinationWidth = Math.Round(pageWidth * imageInfo.WidthFactor);
double destinationHeight = destinationWidth;

// rescale the image to needed size
imageInfo.Image = ImageHelper.ResizeImage(imageInfo.Image, (int)(destinationWidth * 3), (int)(destinationHeight * 3));

// get image
XImage xImage = XImage.FromGdiPlusImage(imageInfo.Image);

// define fill area
XRect destination = new XRect();
destination.X = imageInfo.XFactor * pageWidth;
destination.Y = imageInfo.YFactor * pageHeight;
destination.Width = destinationWidth; //pageWidth * imageInfo.WidthFactor;
destination.Height = destinationHeight; //destination.Width; // shouldn't this use the page height and height factor?

// save state before rotate
XGraphicsState previousState = gfx.Save();

// rotate canvas
gfx.RotateAtTransform(imageInfo.RotationAngle, new XPoint(destination.X + destination.Width / 2, destination.Y + destination.Height / 2));

// render image
gfx.DrawImage(xImage, destination);

// undo transforms
gfx.Restore(previousState);

拜托,请帮忙。它可以从Chrome的PDF查看器打印得很好,非常值得。

我尝试将图像转换为SVG(逐个像素)和渲染,效果很好,但性能使其不可行。我需要找到一个更优雅的解决方案。

非常感谢!

PDF: https://dl.dropbox.com/u/49564994/PDF.pdf

打印出: https://dl.dropbox.com/u/49564994/Print.jpg

1 个答案:

答案 0 :(得分:0)

差不多两年前,我遇到了类似的问题。生成的PDF在打印时全部乱码。这只是一份报告,没有包含任何图像,但缺少几个句子或单词。

我使用Word模板,替换了一些占位符以生成报告,然后使用Office Save As PDF add-in将Word文档保存为PDF。

使用PCL打印机驱动程序或PostScript打印机打印PDF时有所不同。看看你们之间是否有任何区别。可能是一个字体问题。检查字体编码是否设置正确。

当时我没有找到解决方案。最后使用PDF转换为图像并将其发送到打印机。工作得很好。

这也应该可以使用invoking GhostScript to create images from PDF pages的PDFSharp。