2011-06-22 39 views
14

Tôi đang cố gắng xem tài liệu PDF trong trang web MVC của mình, nhưng tôi không thể làm cho nó hoạt động.Xem PDF dưới dạng một phần của trang

Tôi muốn tệp PDF được hiển thị như một phần của nội dung khác trên trang (đầu trang, chân trang, v.v.). Hiện tại tôi có giải pháp hiển thị PDF nhưng trên toàn bộ trang.

Có ai đã làm điều này, nếu có thì làm cách nào?

+0

ngôn ngữ/nền tảng của MVC của bạn? Viên ngọc trên tay vịn? Django? CakePHP? – OnesimusUnbound

+0

Ok, một chút thông tin ... Ngôn ngữ là C# và tôi hiện đang chơi xung quanh với một dự án tiêu chuẩn i VS2010. Tôi đang tạo thời gian chạy PDF và lưu trữ trong luồng. Tôi muốn có thể xem tệp PDF này 'bên trong' một trang bằng cách sử dụng điều khiển tùy chỉnh hoặc giống nhau. Tôi có thể nhúng PDf độc đáo bằng cách sử dụng: Nhấp vào here để xem tệp nhưng điều này không sử dụng luồng. – Peter

Trả lời

28

Tại sao bạn không thử sử dụng iframe như thế này:

<iframe src="even file stream action url"></iframe> 

tôi đề nghị sử dụng thẻ đối tượng nếu có thể, sử dụng iframe chỉ để thử nghiệm.

Nếu bạn muốn làm cho PDF như là một phần của trang như bạn chỉ làm

src =' <% Html.RenderAction ("GetPDF"); %>'

Sau đó, đây là lựa chọn của bạn

Nếu bạn cần hoàn toàn kiểm soát nội dung PDF sử dụng CSS hoặc bất cứ điều gì, như sách Google và như vậy, sau đó bạn cần các công cụ giúp bạn chuyển đổi mỗi trang được yêu cầu PDF sang Plain Text, HTML hoặc thậm chí là hình ảnh. các công cụ như PDFsharp. Search Google For Tools

Nếu bạn muốn hiển thị PDF như là một phần của trang thì đây là những gì bạn phải làm

ASPX: src="<%= Url.Action("GetPDF") %>" 
Razor: src="@Url.Action("GetPDF")" 

Và câu trả lời cuối cùng có thể

<object data="<%= Url.Action("GetPDF") %>" type="application/pdf" width="300" height="200"> 
    alt : <a href="data/test.pdf">test.pdf</a> 
</object> 

Và trong trường hợp mà bạn muốn để trả lại PDF dưới dạng Luồng thì bạn cần

public FileStreamResult GetPDF() 
{ 
    FileStream fs = new FileStream("c:\\PeterPDF2.pdf", FileMode.Open, FileAccess.Read); 
    return File(fs, "application/pdf"); 
} 
+0

Tôi cần tính năng này để hoạt động trong IE! Nếu tôi sử dụng IFrame tôi có thể tải và hiển thị một tệp PDF từ một tệp, nhưng tôi dường như không thể làm cho nó hoạt động Nếu tôi chạy tệp PDF (sử dụng IText hoặc PDFWriter). Bạn có thể cung cấp một ví dụ? – Peter

+0

@Peter trình duyệt khách hàng không quan tâm nếu url là một tập tin trong đĩa hoặc thậm chí trong bộ nhớ, bạn chỉ cần nói với khách hàng brower loại nội dung bạn đang trực tuyến, do đó, vấn đề là tiêu đề HTTP Content-Type. và bạn có thể cho tôi biết nếu bạn có bất kỳ vấn đề nào với việc tạo một phương thức hành động sẽ trả về FileContentResult mới (byte, "application/pdf"); – Beygi

+0

@Peter nếu một lần nữa đây không phải là trường hợp, tôi muốn bạn biết rằng tôi đang làm hết sức mình để giúp bạn. vì vậy xin vui lòng nếu nó có thể cung cấp cho chúng tôi phương pháp hành động của bạn, và làm cho chúng ta rõ ràng rằng vấn đề đang hiển thị PDF từ dòng, hoặc hiển thị nó trong một phần của trang. và có tôi có thể cung cấp mẫu nếu bạn cung cấp cho tôi nguồn phương pháp hành động của bạn – Beygi

Các vấn đề liên quan