2016-08-11 3 views
0

abcPDF Gecko 엔진에서 내 PDF를 내 페이지로 렌더링 할 수 있지만 내 CSS에 절대 경로를 추가하자마자 <link> 요소는 렌더링에 실패합니다.
그러나 PDF를 잘 렌더링 할 수있는 다른 페이지를 가지고 있으며 동일한 JavaScript를 사용하여 CSS <link> 요소에 대한 절대 경로를 추가하고 있습니다.CSS에 절대 경로를 추가하면 Gecko 엔진이 페이지 렌더링시 실패합니다.

자바 스크립트를 사용하여 각 CSS 요소의 href를 동적으로 변경합니다. 즉시 나는이 코드 줄을 추가로

//Give css files full paths 
var domain = window.location.protocol + "//" + window.location.host; 

html.find("link").each(function(index, item){ 
    var linkPath = domain + $(item).attr("href"); 
    $(item).attr("href", linkPath); 
}); 

, 나는 다음과 같은 예외를 얻을 :

WebSupergoo.ABCpdf8.Doc.AddImageHtml(String html, Boolean paged, Int32 width, Boolean disableCache) +209 
    WebSupergoo.ABCpdf8.Doc.AddImageHtml(String html) +64 
    DocuMatix_Complete_Suite.Classes.Helpers.ConvertToPDF.ExportToPDF(String companyId, String name, String pHtmlorUrl, Boolean pIsUrl, Boolean useCohesion, EngineType engine, Orientation orientation) +530 
    DocuMatixPageBase.PdfContent(String filename, String html, Boolean useCohesion, EngineType engine, Orientation orientation) +244 
    DocuMatix_Complete_Suite.ReportCenter.Controllers.ReportCenterController.CreateSubscriberActivityReportPDF(SubscriberActivityReportPDFModel model, String orientation) +109 
    lambda_method(Closure , ControllerBase , Object[]) +147 
    System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +14 
    System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +156 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState) +22 
    System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32 
    System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225 
    System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34 
    System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100 
    System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39 
    System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29 
    System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651532 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155er code here 

그 페이지가 도착에 내가 자바 스크립트/jQuery를이 라인과 PDF를 구현하는 다른 페이지가 완벽하게 생성됩니다. 내가 이것을 조사했을 때 EngineTypeMSHtml으로 설정하면 페이지가 렌더링되지만 스타일이 잘못되었음을 발견했습니다. 이것은 Gecko 엔진에 문제가있는 것 같습니다. 생성 된 각 CSS 링크를 통해 합법적 인 링크인지 확인했습니다. 필자는 CSS 링크를 PDF 렌더링에 성공한 페이지와 비교했으며 두 페이지는 동일한 CSS 링크를 사용하고 있습니다.

내가 알아내는 데 도움이되는 코드 또는 정보가 확실하지 않지만 누군가가 올바른 방향으로 나를 가리킬 수 있다면 도움이 크게 감사 할 것입니다. 나는 지금 어디로 가야할지를 놓치고있다.

답변

0

문제점이 무엇인지 발견했습니다.

나는 나의 테이블에 <tfoot>을했다, 그리고 <tfoot>이 아래 <tbody> 때 어떤 이유로, abcPDF 그것을 좋아하지 않는다, 그래서 나는 <thead> 위의 <tfoot> 섹션을 이동 내 HTML은 PDF로 변환 할 수 있었다.