PdfHelper返回对象引用未设置为Umbraco 7.4上的实例

时间:2016-04-19 07:18:11

标签: xml razor pdf-generation umbraco

我在Umbraco 7.4上安装了PDF Creator。如果我使用Razor示例模板进行测试,我可以创建PDF,但在使用PdfHelper时它会返回

System.NullReferenceException: Object reference not set to an instance of an object.

Line 3:  @helper Start() {
Line 4:      <!-- Start Root -->
Line 5:         @Html.Raw("<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\" xmlns:ibex=\"http://www.xmlpdf.com/2003/ibex/Format\">")
Line 6:      <!-- End Root -->
Line 7:  }

我创建了一个新模板:

<?xml version="1.0" encoding="UTF-8" ?>
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    Layout = null;
    //Response.ContentType = "text/xsl";
    //Response.AppendHeader("X-Pdf-Render", "true");

    // -- Uncomment this to force the browser to download the PDF.
    // Response.AppendHeader("X-Pdf-Force-Download","darren.pdf");
}
  @PdfHelper.Start()

    @PdfHelper.MetaData(@CurrentPage.Name, "Darren Ferguson")
    @PdfHelper.LayoutTwoColumnA4()

     @* For ecnryption and password protection there is a:
       PdfHelper.Secure() and PdfHelper.Secure("userPass", "ownerPass") helper *@

    @PdfHelper.StartBody()

       @PdfHelper.StartArea("header")
          @PdfHelper.Block(@CurrentPage.Name, "Arial", "23pt", "#3399ff")
       @PdfHelper.EndArea()

       @PdfHelper.StartArea("body")

          @Pdf.RenderRichText(@CurrentPage.BodyText)

          @PdfHelper.PagerBlock()

       @PdfHelper.EndArea()

    @PdfHelper.EndBody()

   @PdfHelper.End()

这只会返回上面提到的错误。

日志文件包含:

 2016-04-19 08:42:41,711 [P16524/D23/T130] ERROR Umbraco.Core.UmbracoApplicationBase - An unhandled exception occurred
System.NullReferenceException: Object reference not set to an instance of an object.
   at ASP.PdfHelper.<Start>b__0(TextWriter __razor_helper_writer) in c:\Development\Projects\Support\Support\App_Code\PdfHelper.cshtml:line 5
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at ASP._Page_Views_PDF_cshtml.Execute() in c:\Development\Projects\Support\Support\Views\PDF.cshtml:line 12
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

1 个答案:

答案 0 :(得分:1)

使用其他模板修复问题