2014-01-21 73 views
1

我構建了一個應用程序以自動生成PDF,從數據庫獲取數據,但最近客戶注意到使用RGB顏色配置文件(而不是CMYK)呈現了不同的圖像。ABCpdf .net無法正確呈現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文檔,但我沒有找到我的問題的解決方案,有誰知道可能是什麼問題?

回答

0

好吧,我想清楚是什麼問題。

我不知道HTML不渲染CMYK顏色配置文件,但只有RGB。

爲了解決這個問題,我改變了所有的圖像顏色配置文件,使用Photoshop從CMYK到S_RGB,而不會損失太多的顏色質量,謝天謝地。