Прежде чем публиковать это сообщение, я просмотрел много сообщений в SO, но мало кто закрыл прямое сообщение о необходимости просмотра часто задаваемых вопросов, немногие дали решения, которые используют iTextSharp или что-то еще. Но никто не решает мою проблему. Моя проблема заключается в том, что у меня есть байт [], и мне нужно создать PDF-файл в новом дочернем окне. Мы просто используем ASP.NET MVC 4 и iTextSharp или аналогичные. Пожалуйста, дайте мне знать, если есть сообщение, которое точно соответствует этому. Я в порядке, чтобы создавать новые частичные видыASP.NET MVC Generate PDF from byte []
У меня есть одно изображение в формате PDF в моем частичном представлении. Когда пользователь щелкает его, мне нужно отобразить PDF в новом окне браузера. Я могу успешно вызвать функцию JavaScript, которая вызывает контроллер, который получает файл с другого сервера. Я даже могу преобразовать файл в массив байтов. Я хочу показать этот массив байтов в формате PDF в новом окне браузера.
В View У меня есть PDF Icon, как показано ниже
<img onclick="ShowCDinPDF('@Url.Action("ShowPDF", "MyController", new {personid= personid})','', '920','500')" />
ShowCDinPDF в моей JavaScript, как показано ниже
function ShowCDinPDF(popUpURL, windowProperties, w, h) {
var childWindow = window.showModelessDialog(popUpURL, "", "");
}
В моем контроллере, я ниже метод ShowPDF
public ActionResult ShowPDF(string personid)
{
//call service and get data
string fileContent = response.FileContent;
byte[] data = Convert.FromBase64String(fileContent);
**// Here using data I need to show PDF in new window**
}
Пожалуйста дайте мне знать, как создать PDF.
UPDATE
Я сделал небольшой прогресс. Теперь мой код выглядит ниже. Откроется новое окно, и я получаю всплывающее окно с сообщением Файл не начинается с '% PDF-'. Я пытался найти решение для этого, но без успеха.
public ActionResult ShowPDF(string personid)
{
//call service and get data
string fileContent = response.FileContent;
byte[] data = Convert.FromBase64String(fileContent);
using (MemoryStream memoryStream = new MemoryStream())
{
Response.ClearHeaders();
Response.ClearContent();
Response.Charset = "";
Response.AddHeader("Content-Type", "application/pdf");
memoryStream.Write(data, 0, data.Length);
memoryStream.WriteTo(Response.OutputStream);
Response.Flush();
Response.Close();
Response.End();
}
return View();
}
Заранее спасибо.
UPDATE 2
Я пытался много, но не использовать. Поскольку мы приближались к нашему сроку PROD, наша команда решила создать файл PDF на нашем сервере и запустить этот файл в браузере IE.
ПРИМЕЧАНИЕ
Я действительно понятия не имею, почему это вниз проголосовали. Кто-нибудь может отображать файл в формате PDF без сохранения/создания PDF-файла в любом физическом месте. Зачем голосовать?
Does [эта работа] (http://stackoverflow.com/a/20500547/231316)? –
@ Крис: Я попробовал. Это не работает. Он просто открывает пустое окно. – Ziggler
Почему, черт возьми, этот вопрос опускает голос -1. Я искал много форумов и дискуссий в SO, но никто точно не сообщил, какое решение будет и все решения, которые они сказали, я пробовал всех, и ничего не работает ... – Ziggler