我得到「無法加載PDF文檔」在Chrome和「文件已損壞且無法修復」在IE瀏覽器的一些文件。錯誤,同時打開PDF
的代碼如下:
PDFSteramer:
if (pdf != null)
{
Response.ContentType = "application/PDF";
Response.AddHeader("Content-Type", "application/pdf");
Response.AddHeader("Content-Disposition", "inline");
pdf.Renderer.Render(pdf, Response.OutputStream);
Response.Flush();
}
而在渲染類:
using (FileStream fs = new FileStream(this._ParentDocument.Document.FullName, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[bufferSize];
fs.Read(buffer, 0, bufferSize);
using (StringReader reader = new StringReader(System.Text.ASCIIEncoding.ASCII.GetString(buffer)))
{
Decoder decoder = new UuDecoder(stream, "");
string data;
while ((data = reader.ReadLine()) != null)
{
decoder.DecodeLine(data);
}
}
}
和DecodeLine是如下:
public override bool DecodeLine(string line)
{
try
{
byte[] data = Encoding.UTF8.GetBytes(line);
//byte[] data = uuDecode(line);
outStream.Write(data, 0, data.Length);
}
catch (Exception ex)
{
}
return false;
}
以下就是它在F中拋出的東西irefox:
而且在Adobe閱讀器:
不確定你可以讀取pdf文件作爲文本文件(即從它讀取字符串,而不是讀取它的二進制文件),但如果這是正確的,使用ASCII編碼讀取然後用UTF8解碼聽起來很糟糕。你爲什麼不簡單地返回你閱讀的二進制文件內容? –
的任何鏈接? @GianPaolo – Neel
這應該只是作爲二進制傳輸,而不是文本。不知道你爲什麼要把它轉換成任何東西。只需設置ContentLength,將pdf讀爲字節並將這些字節轉儲到流中。 – Nyerguds