ABCPDF .NET不能正确渲染CMYK图像



我构建了一个应用程序,以自动生成PDF,从DB中获取数据,但最近客户注意到图像是不同的,使用RGB颜色配置文件,而不是CMYK。

因此,我尝试构建一个简单的测试代码,以找到可能是问题所在,但结果是相同的。

在这里我的示例代码:

控制器

namespace PdfTest.Controllers
{
    public class HomeController : Controller
    {
        private string _license;
        public HomeController()
        {
            _license = ConfigurationManager.AppSettings["abcPDFLicense"];
            XSettings.InstallLicense(_license);
        }
        public PartialViewResult Index()
        {
            using (Doc doc = new Doc())
            {
                doc.HtmlOptions.Engine = EngineType.Gecko;
                doc.HtmlOptions.AddLinks = true;
                string html = RenderRazorViewToString("Index", "");
                int pageId = doc.AddImageHtml(html, true, 2500, true);
                while (doc.Chainable(pageId))
                {
                    doc.Page = doc.AddPage();
                    pageId = doc.AddImageToChain(pageId);
                }
                for (int i = 1; i <= doc.PageCount; i++)
                {
                    doc.PageNumber = i;
                    doc.Flatten();
                }
                string pdfDirectory = Server.MapPath("~/PDF_Diesel");
                DirectoryInfo directoryInfo = new DirectoryInfo(pdfDirectory);
                if (!directoryInfo.Exists)
                    directoryInfo.Create();
                string fileName = "test.pdf";
                doc.Rendering.ColorSpace = XRendering.ColorSpaceType.Cmyk;
                doc.Save(string.Format(@"{0}{1}", directoryInfo.FullName, fileName));
                doc.Clear();
            }
            return PartialView();
        }
        public string RenderRazorViewToString(string viewName, object model)
        {
            ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
                var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);
                viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                return sw.GetStringBuilder().ToString();
            }
        }
    }
}

查看

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <img src="file://@Server.MapPath("~/Images/_banner2.jpg")" />
    <img src="~/Images/_banner2.jpg" />
</body>
</html>

此代码仅带有已加载的图像和一个示例PDF返回我的视图,但仍继续呈现RGB中的图像,而不是在CMYK中。

我阅读了ABCPDF文档,但是我没有找到问题的解决方案,有人知道可能是问题吗?

好吧,我想出了什么问题。

我不知道html不会呈现cmyk颜色配置文件,而是RGB。

为了解决问题,我将所有图像用Photoshop从CMYK更改为S_RGB,而不会丢失太多颜色的质量。

最新更新