我在CMYK中保存了一个tiff文件,我正在将该文件加载到WPF中的图像中。然后,我将图像添加到文档中,并使用Adobe打印驱动程序将其保存到CMYK中。PDF文档中的图像不像原始图像那么有活力。我已经尝试了PDF打印机的许多设置,但都没有效果。如果我将PDF保存在RGB颜色空间中,据我所知,颜色是完全保留的。或者,我可以从相同的CMYK映像中在Acrobat中创建一个CMYK文件,并且质量是完美的。
我的猜测是,在WPF中加载图像和打印图像之间,我得到了RGB像素,然后这些像素被转换回CMYK,丢失了原始的颜色信息,但我真的不知道。当加载位图图像时,我可以在调试器中看到格式是Cmyk32,所以可能是图像控件、页面或文档在通过XPS时以RGB格式呈现它。我看不出来。有人有什么想法吗?下面是我为显示问题而创建的代码示例。
// select printer and get printer settings
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() != true)
{
return;
}
LocalPrintServer ps = new LocalPrintServer();
// Get the default print queue
PrintQueue pq = ps.GetPrintQueue(printDialog.PrintQueue.FullName);
// create a document
FixedDocument document = new FixedDocument();
document.DocumentPaginator.PageSize =
new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
// create a page
FixedPage page = new FixedPage
{
Width = document.DocumentPaginator.PageSize.Width,
Height = document.DocumentPaginator.PageSize.Height
};
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri("testcmyk.tif", UriKind.RelativeOrAbsolute);
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
bi.EndInit();
Image image = new Image
{
Source = bi
};
page.Children.Add(image);
PageContent content = new PageContent
{
Child = page
};
document.Pages.Add(content);
XpsDocumentWriter xpsdw = PrintQueue.CreateXpsDocumentWriter(pq);
xpsdw.Write(document, printDialog.PrintTicket);
我看到了一些关于在WPF中使用CMYK的其他问题,但我还没有找到确切的问题。我真的需要的CMYK提交到一个专业的印刷公司,但艺术作品正在失去颜色通过软件。当tiff文件也具有透明度时,问题会变得更糟(看起来更糟)。
编辑
在尝试了各种方法来跟踪问题发生的地方之后,我决定只保存XPS文件。在这样做的过程中,我发现一些令人沮丧的事情。下面是一个代码片段:
using (FileStream stream = new FileStream("test.xps", FileMode.Create))
{
Package package = Package.Open(stream, FileMode.Create);
using (XpsDocument xpsDoc = new XpsDocument(package, System.IO.Packaging.CompressionOption.NotCompressed))
{
XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(xpsDoc);
xpsdw.Write(image);
}
}
我在这里传递的图像与第一个代码片段中的图像相同,只是为了看看XpsDocumentWriter将如何处理它。当我用7zip打开生成的.xps文件时,我发现原来的tiff文件不见了,并被转换为png!如果我正确地理解了打印系统,我的原始CMYK tiff文件永远不会到达pdf打印机,因为它通过XPS系统到达那里。有什么补救办法吗?有没有办法让XPS保留原来的图像?这个问题是否甚至在这个阶段之前就出现了?请帮帮我!
发布于 2021-06-03 15:32:15
如果它是您的选项,您可以考虑使用像LEADTOOLS成像SDK这样的成像工具包,它具有处理CMYK颜色空间的类。(免责声明:我是该工具包供应商的雇员)
该工具包有一个LoadCmykPlanes和SaveCmykPlanes方法,可用于将TIFF图像转换为CMYK,而不影响CMYK平面。
这方面的代码如下:
// take CMYK data from file inputCmykTiff and save it as PDF into file outputCmykPdf
Leadtools.Codecs.RasterCodecs codecs = new RasterCodecs();
Leadtools.RasterImage imageWithPlanes = codecs.LoadCmykPlanes(inputCmykTiff, 0, 1);
codecs.SaveCmykPlanes(imageWithPlanes, outputCmykPdf, RasterImageFormat.RasPdfCmyk, 8, 1, CodecsSavePageMode.Overwrite);
由于结果将取决于您的输入图像,我建议使用自由评价进行测试,以确定这是否会产生良好的结果。
https://stackoverflow.com/questions/67621030
复制相似问题