DB에서 데이터를 가져 와서 자동으로 PDF를 생성하는 응용 프로그램을 만들었지 만 최근에는 CMYK 대신 RGB 색상 프로파일을 사용하여 이미지가 다르게 렌더링되었다는 것을 알게되었습니다.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와 뷰를 돌려줍니다 그러나 CMYK가 아닌 RGB로 이미지를 계속 렌더링합니다.
나는 ABCpdf 문서를 읽었지만 내 문제의 해결책을 찾지 못했지만 문제가 무엇인지 알 수 있습니까?