Получить мой выбор edit|PDF, чтобы перейти непосредственно на страницу pdf - документа, чтобы распечатать его?
Прямо сейчас у меня есть index.cshtml, который имеет html.actionLink для предварительного просмотра html-таблицы, которая извлекает данные из формы, чтобы подготовиться к ее печати. Затем, когда я нажимаю на ссылку, она переходит к предварительному просмотру PDFOnePage.cshtml с html-кодом. Затем есть кнопка, чтобы получить его в метод abcpdf для печати. Я хотел бы получить оба действия в один шаг от index.cshtml. Я довольно новичок в веб-приложениях, поэтому немного запутался, как это делается.
Это часть моего index.cshtml со ссылкой:
<td> @Html.ActionLink("Edit", "Edit", new { id = item.ID }) | @Html.ActionLink("PDF", "PDFOnePage", new { id = item.ID }) </td>
Затем, когда я нажимаю на ссылку PDF, она показывает html-код до того, как он будет напечатан.
PDFOnePage.cshtml выглядит следующим образом:
<table frame="box" style="width:100%; border-collapse:separate"> <tr> <td colspan="3"> BlahBlahBlahLotsOfStuff</td> </tr> </table> <button> <a href="@Url.Action("HmtltoPDF2","Applicant")">Export PDF</a> </button>
Поэтому, когда мы нажимаем эту кнопку, она показывает PDF, а когда я нажимаю ctrl-p, она вызывает графический интерфейс печати.
Эта кнопка обращается к моему методу ApplicantController.cs:
public FileStreamResult HmtltoPDF2() { //getting the url to convert to pdf String PreviousPage = System.Web.HttpContext.Current.Request.UrlReferrer.AbsoluteUri; //abcpdf was annoying for not accepting the Url directly //so just make a string variable to assign the value of the url // DO NOT delete this and use PreviousPage directly //it will break the PDF Convertion. String HtmlToPDFConvertion = PreviousPage; MemoryStream m = new MemoryStream(); Doc theDoc = new Doc(); theDoc.MediaBox.String = "A4"; theDoc.FontSize = 8; //theDoc.Rect.Inset(114, 162); theDoc.Rect.Inset(15, 1); theDoc.HtmlOptions.Engine = EngineType.Chrome; theDoc.HtmlOptions.UseScript = true; // enable JavaScript theDoc.HtmlOptions.Media = MediaType.Print; // Or Screen for a more screen oriented output theDoc.HtmlOptions.InitialWidth = 800; // In case we have a responsive site which is non-specific on good widths //theDoc.HtmlOptions.RepaintDelay = 500; // Only required if you have AJAX or animated content such as graphs //theDoc.HtmlOptions.IgnoreCertificateErrors = false; // Disabled for ease of debugging //theDoc.HtmlOptions.FireShield.Policy = XHtmlFireShield.Enforcement.Deny; // Disabled for ease of debugging theDoc.Page = theDoc.AddPage(); int theID; theID = theDoc.AddImageUrl(HtmlToPDFConvertion); while (true) { theDoc.FrameRect(); // add a black border if (!theDoc.Chainable(theID)) break; theDoc.Page = theDoc.AddPage(); theID = theDoc.AddImageToChain(theID); } for (int i = 1; i <= theDoc.PageCount; i++) { theDoc.PageNumber = i; theDoc.Flatten(); } theDoc.Save(Server.MapPath(Path)); byte[] theData = theDoc.GetData(); Response.Clear(); Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF"); Response.AddHeader("content-length", theData.Length.ToString()); Response.BinaryWrite(theData); Response.End(); return File(m, "application/pdf", "test.pdf"); //theDoc.Clear(); }
Все вместе это схема того, что представляют собой шаги:
Edit|PDF (из index.cshtml)
|
|
в
BlahBlahBlahLotsOfStuff
Кнопка ExportPDF (из PDFOnePage.cshtml для получения содержимого)
|
|
в
BlahBlahBlahLotsOfStuff
Экспорт в PDF файл (/заявителя/HtmltoPDF2) (когда нажмите ссылку "экспорт в PDF" идет
ApplicantController.в CS)
|
|
в
принтер интерфейс (после нажмите сочетание клавиш Ctrl-P см интерфейс принтера )
Как мне избавиться от промежуточного шага, когда я дважды просматриваю PDF/html перед печатью? Как поставить HTML.actionlink панели (в формате PDF) вместе с url.href, что Действие htmltoPDF2? Я не хочу печатать кнопку с содержимым страницы или полосу прокрутки.
У меня нет большого опыта в таких вещах, поэтому я не уверен, что нужно гуглить, чтобы узнать, как собрать все это в один шаг. Я унаследовал эту веб-страницу от кого-то, кого здесь больше нет.
Что я уже пробовал:
Я попытался поместить код кнопки в index.cshtml, где у меня есть ссылка PDF, но мне нужна ссылка, подобная той, что есть в редактировании. Я не уверен, что мне нужен промежуточный шаг создания предварительного просмотра и просмотра кнопки html, прежде чем я нажму кнопку экспорта PDF и сделаю ctrl-p. Я не могу правильно использовать синтаксис для использования ссылки в index.cshtml, и тогда я буду видеть то, что вижу, когда нажимаю кнопку экспорта PDF.
ShellCl
Я попробовал это сделать, но он ведет себя точно так же. Он вызывает экран с html и кнопкой вместо того, чтобы пропустить этот шаг.
<a href="@*Url.Action("HmtltoPDF2","заявитель"), new { id = item.Идентификатор })>в формате PDF&ЛТ;/а&амп;ГТ