這是我某個功能,按下修改後會出現一張表單
我想將這個表單轉成PDF檔
但目前路徑好像有問題,想請各位幫我看一下
這是登入表單後的URL
http://localhost:11477/NIS/Guide/PDPatGuideTestEdit?strGuid=98AA91FA-1187-4FA3-9C02-A5044FB3FB2A
我是參考這個網站的
https://dotblogs.com.tw/shadow/2014/02/09/143891
這是我的controller
[HttpGet]
public ActionResult ExportPDF(string strGuid)
{
WebClient wc = new WebClient();
string htmlText = wc.DownloadString("http://localhost:11477/NIS/Guide/PDPatGuideTestEdit?strGuid"+strGuid);
byte[] pdfFile = this.ConvertHtmlTextToPDF(htmlText);
return File(pdfFile, "application/pdf", "範例PDF檔.pdf");
}
private byte[] ConvertHtmlTextToPDF(string htmlText)
{
if (string.IsNullOrEmpty(htmlText))
{
return null;
}
//避免當htmlText無任何html tag標籤的純文字時,轉PDF時會掛掉,所以一律加上<p>標籤
htmlText = "<p>" + htmlText + "</p>";
MemoryStream outputStream = new MemoryStream();//要把PDF寫到哪個串流
byte[] data = Encoding.UTF8.GetBytes(htmlText);//字串轉成byte[]
MemoryStream msInput = new MemoryStream(data);
Document doc = new Document();//要寫PDF的文件,建構子沒填的話預設直式A4
PdfWriter writer = PdfWriter.GetInstance(doc, outputStream);
//指定文件預設開檔時的縮放為100%
PdfDestination pdfDest = new PdfDestination(PdfDestination.XYZ, 0, doc.PageSize.Height, 1f);
//開啟Document文件
doc.Open();
//使用XMLWorkerHelper把Html parse到PDF檔裡
XMLWorkerHelper.GetInstance().ParseXHtml(writer, doc, msInput, null, Encoding.UTF8, new UnicodeFontFactory());
//將pdfDest設定的資料寫到PDF檔
PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer);
writer.SetOpenAction(action);
doc.Close();
msInput.Close();
outputStream.Close();
//回傳PDF檔案
return outputStream.ToArray();
}
我有看一下路徑傳的值,我發現他回傳的不是我表單裡的內容
所以想請問這個路徑我該如何修改?
我沒用過 XMLWorkerHelper 跟 PdfAction,
無法回答你的問題.
這樣看起來您需要處理的是Authorize
的問題,
如果您想要讓您的ActionResult略過所有Authorize控制,
請在ActionResult上方標註AllowAnonymous
[HttpGet]
[AllowAnonymous]
public ActionResult ExportPDF(string strGuid)
{
// ...
}