2017-03-17 156 views
1

我正在使用以下库来生成PDF文档(https://www.nuget.org/packages/HtmlRenderer.PdfSharp)。C#PdfSharp - 困难从HTML生成PDF

[ValidateInput(false)] 
    public FileStreamResult GeneratePDF(String html) 
    { 
     MemoryStream stream = new MemoryStream();; 

    CssData css =  PdfGenerator.ParseStyleSheet(System.IO.File.ReadAllText(Server.MapPath("~/Content/pdfForms.css"))); 
    PdfDocument doc = new PdfDocument(); 
     doc = PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4, 25, css); 

     doc.Save(stream, false); 
     byte[] file = stream.ToArray(); 
     stream.Write(file, 0, file.Length); 
     stream.Position = 0; 
     return new FileStreamResult(stream, "application/pdf"); 

    } 

我在尝试使用库时遇到了一些奇怪的问题。 HTML字符串正在被正确传递,但我收到以下错误。

An exception of type 'System.InvalidOperationException' occurred in PdfSharp.dll but was not handled in user code 

Additional information: Cannot save a PDF document with no pages. 

然而,在html变量如下所示:

<table><tr><th colspan=9><h2>Pre-Screening Notice and Certification Requesiton for the Work Opportunity Credit</h2><h3 class='formInfo'>Information about Form 8850 and its separate instructions is at www.irs.gov/form8850</h3><h3 class='formInstructions'>Job applicant: Fill in the lines below and check any boxes that apply.</h3></th></tr><tr><td colspan=2>Your name </td><td colspan=3><span class='userInput'>form.EmployeeName</span></td><td colspan=2>Social security number</td><td colspan=2><span class='userInput'>form.SSN</td></tr><tr><td colspan=3>Street Address: </td><td colspan=6><span class='userInput'>form.StreetAddress</span></td></tr><tr><td colspan=3>City or town, state, and ZIP code </td><td colspan=6><span class='userInput'>90210</span></td></tr><tr><td colspan=2>County</td><td colspan=3><span class='userInput'>form.County</span></td><td colspan=2>Telephone</td><td colspan=2><span class='userInput'>1234567890 </span></td></tr><tr><td colspan=5>If you are under age 40, enter your date of birth (month, day, year) </td><td colspan=4><span class='userInput'>form.DOB</span></td></tr><tr><td><input type='checkbox' checked /></td><td colspan=8> Check here if you received a conditional certification from the state workforce agency (SWA) or a participating local agency for the work opportunity credit. </td></tr><tr><td><input type='checkbox' checked /></td><td colspan=8> Check here if <b>any</b> of the following statements apply to you. <ul> <li> I am a member of a family that has received assistance from Temporary Assistance for Needy Families (TANF) for any 9 months during the past 18 months. </li> <li> I am a veteran and a member of a family that received Supplemental Nutrition Assistance Program (SNAP) benefits (food stamps) for at least a 3-month period during the past 15 months. </li> <li> I was referred here by a rehabilitation agency approved by the state, an employment network under the Ticket to Work program, or the Department of Veterans Affairs. </li> <li> I am at least age 18 but not age 40 or older and I am a member of a family that: <ul class='letterList'> <li> Received SNAP benefits (food stamps) for the past 6 months; or </li> <li> Received SNAP benefits (food stamps) for at least 3 of the past 5 months, but is no longer eligible to receive them.</li> </ul> </li> <li>During the past year, I was convicted of a felony or released from prison for a felony.</li> <li> I received supplemental security income (SSI) benefits for any month ending during the past 60 days. </li> <li>I am a veteran and I was unemployed for a period or periods totaling at least 4 weeks but less than 6 months during the past year.</li> </ul> </td></tr><tr><td><input type='checkbox' checked /> </td><td colspan=8> Check here if you are a veteran and you were unemployed for a period or periods totaling at least 6 months during the pastyear.</td></tr><tr><td><input type='checkbox' checked /></td><td colspan=8>Check here if you are a veteran entitled to compensation for a service-connected disability and you were discharged or released from active duty in the U.S. Armed Forces during the past year.</td></tr><tr><td><input type='checkbox' checked /><td><td colspan=8>Check here if you are a veteran entitled to compensation for a service-connected disability and you were unemployed for a period or periods totaling at least 6 months during the past year.<td></tr> <tr><td><input type='checkbox' checked /></td><td colspan=8>Check here if you are a member of a family that: <ul> <li>Received TANF payments for at least the past 18 months; <b>or</b></li> <li> Received TANF payments for any 18 months beginning after August 5, 1997, <b>and</b> the earliest 18-month period beginning after August 5, 1997, ended during the past 2 years; <b>or</b> </li> <li> Stopped being eligible for TANF payments during the past 2 years because federal or state law limited the maximum time those payments could be made.</li> </ul></td></tr> <tr><td> <input type='checkbox' checked /> </td> <td colspan=8>Check here if you are in a period of unemployment that is at least 27 consecutive weeks and for all or part of that period you received unemployment compensation.</td></tr></fieldset><tr><td colspan=9> <h3 class='formInstructions'>Signature - All Applicants Must Sign.</h3> <p>Under penalties of perjury, I declare that I gave the above information to the employer on or before the day I was offered a job, and it is, to the best of my knowledge, true, correct, and complete</p></td></tr><tr><td colspan=3>Job applicant's signature</td><td colspan=4><img class='img-responsive' src=data:image/png;base64,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 /></td><td colspan=2>Date</td> <td colspan=2><span class='userInput'>form.SignedDate</span></td></tr></table> 

我在一个单独的文件中保存的HTML并在浏览器中打开它,它只是显示。

此外,我试图在<html><body></body></html>包装HTML。奇怪的是,我没有收到任何错误,但得到了一个空白的PDF。

万一有帮助,通过以下生成的HTML:

public partial class Form8850 
{/** code omitted for brevity **/ 
    public string WriteForm() 
    { 
     String html = "<table><tr><th colspan=9><h2>Pre-Screening Notice and Certification Requesiton for the Work Opportunity Credit</h2>"; 
     html += "<h3 class='formInfo'>Information about Form 8850 and its separate instructions is at www.irs.gov/form8850</h3>"; 
     html += "<h3 class='formInstructions'>Job applicant: Fill in the lines below and check any boxes that apply.</h3></th></tr>"; 

     html += String.Format("<tr><td colspan=2>Your name </td><td colspan=3><span class='userInput'>{0}</span></td><td colspan=2>Social security number</td><td colspan=2><span class='userInput'>{1}</td></tr>", this.EmployeeName, this.SSN); 
     html += String.Format("<tr><td colspan=3>Street Address: </td><td colspan=6><span class='userInput'>{0}</span></td></tr>", this.StreetAddress); 
     html += String.Format("<tr><td colspan=3>City or town, state, and ZIP code </td><td colspan=6><span class='userInput'>{0}</span></td></tr>", this.CityStateZip); 
     html += String.Format("<tr><td colspan=2>County</td><td colspan=3><span class='userInput'>{0}</span></td><td colspan=2>Telephone</td><td colspan=2><span class='userInput'>{1} </span></td></tr>", this.County, this.Telephone); 
     html += String.Format("<tr><td colspan=5>If you are under age 40, enter your date of birth (month, day, year) </td><td colspan=4><span class='userInput'>{0}</span></td></tr>", (this.DOB != null) ? this.DOB : ""); 


     html += String.Format("<tr><td><input type='checkbox' {0} /></td><td colspan=8> Check here if you received a conditional certification from the state workforce agency (SWA) or a participating local agency for the work opportunity credit. </td></tr>", IsQ1Checked ? "checked" : ""); 
     html += String.Format("<tr><td><input type='checkbox' {0} /></td><td colspan=8> Check here if <b>any</b> of the following statements apply to you. <ul> <li> I am a member of a family that has received assistance from Temporary Assistance for Needy Families (TANF) for any 9 months during the past 18 months. </li> <li> I am a veteran and a member of a family that received Supplemental Nutrition Assistance Program (SNAP) benefits (food stamps) for at least a 3-month period during the past 15 months. </li> <li> I was referred here by a rehabilitation agency approved by the state, an employment network under the Ticket to Work program, or the Department of Veterans Affairs. </li> <li> I am at least age 18 but not age 40 or older and I am a member of a family that: <ul class='letterList'> <li> Received SNAP benefits (food stamps) for the past 6 months; or </li> <li> Received SNAP benefits (food stamps) for at least 3 of the past 5 months, but is no longer eligible to receive them.</li> </ul> </li> <li>During the past year, I was convicted of a felony or released from prison for a felony.</li> <li> I received supplemental security income (SSI) benefits for any month ending during the past 60 days. </li> <li>I am a veteran and I was unemployed for a period or periods totaling at least 4 weeks but less than 6 months during the past year.</li> </ul> </td></tr>", IsQ2Checked ? "checked" : ""); 
     html += String.Format("<tr><td><input type='checkbox' {0} /> </td><td colspan=8> Check here if you are a veteran and you were unemployed for a period or periods totaling at least 6 months during the pastyear.</td></tr>", IsQ3Checked ? "checked" : ""); 
     html += String.Format("<tr><td><input type='checkbox' {0} /></td><td colspan=8>Check here if you are a veteran entitled to compensation for a service-connected disability and you were discharged or released from active duty in the U.S. Armed Forces during the past year.</td></tr>", IsQ4Checked ? "checked" : ""); 
     html += String.Format("<tr><td><input type='checkbox' {0} /><td><td colspan=8>Check here if you are a veteran entitled to compensation for a service-connected disability and you were unemployed for a period or periods totaling at least 6 months during the past year.<td></tr> ", IsQ5Checked ? "checked" : ""); 
     html += String.Format("<tr><td><input type='checkbox' {0} /></td><td colspan=8>Check here if you are a member of a family that: <ul> <li>Received TANF payments for at least the past 18 months; <b>or</b></li> <li> Received TANF payments for any 18 months beginning after August 5, 1997, <b>and</b> the earliest 18-month period beginning after August 5, 1997, ended during the past 2 years; <b>or</b> </li> <li> Stopped being eligible for TANF payments during the past 2 years because federal or state law limited the maximum time those payments could be made.</li> </ul></td></tr> ", IsQ6Checked ? "checked" : ""); 
     html += String.Format("<tr><td> <input type='checkbox' {0} /> </td> <td colspan=8>Check here if you are in a period of unemployment that is at least 27 consecutive weeks and for all or part of that period you received unemployment compensation.</td></tr></fieldset>", IsQ7Checked ? "checked" : ""); 

     html += "<tr><td colspan=9> <h3 class='formInstructions'>Signature - All Applicants Must Sign.</h3> <p>Under penalties of perjury, I declare that I gave the above information to the employer on or before the day I was offered a job, and it is, to the best of my knowledge, true, correct, and complete</p></td></tr>"; 

     html += String.Format("<tr><td colspan=3>Job applicant's signature</td><td colspan=4><img class='img-responsive' src={0} /></td><td colspan=2>Date</td> <td colspan=2><span class='userInput'>{1}</span></td></tr></table>", this.form8850SigData, this.SignedDate); 

     return html; 
    } 

,并传递到一个视图

<h1>Review and Confirm</h1> 
<h2>Please review your document below. </h2> 

<form target="_blank" method="post" action="GeneratePDF" > <input type='hidden' name='html' value="@Model.htmlForm "/> <button class="btn-block btn-primary ">View</button></form> 

由控制器方法

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Confirm8850(Form8850 form) 
    { 


     Confirm8850ViewModel vm = new Confirm8850ViewModel();  
     String formData = form.WriteForm(); 
     vm.form = form; 
     vm.htmlForm = formData; 
//  vm.tempPDFPath = GeneratePDF(formData, String.Format("{0}_{1}_8850", model.newHire.LastName, model.newHire.FirstName), true); 

     return View(vm);   
    } 

任何意见将不胜感激。

回答

0

您必须先致电doc.AddPage(),然后才能使用文档。它返回一个对页面的引用,你可以用它来设置尺寸或获取XGraphics/renderContext。

无法立即找到它,但在SF或PdfSharp/HtmlRenderer论坛/帮助页面上有一个非常类似的问题。

+0

我在找到“从htmlrenderer pdfsharp插入部分”时发现它,它有一个论坛帖子提到一个错误,您必须将页面复制到新文档中。但类似地,有人在使用pdfdocument对象之前没有添加页面时遇到了问题。 – Tyeth