0

私がする必要があるのは;

  1. SharePointからPDFを取得する
  2. PDFSharpを使用して単一のページを取得します
  3. それをビューに戻し、そのページを表示します

私がこれまでに持っているのは、

        context.Response.ClearHeaders();
        context.Response.ContentType = "application/pdf";            
        context.Response.AddHeader("content-disposition", "inline; filename=Something.pdf");

        // Get a fresh copy of the sample PDF file from Sharepoint later on
        string filename = @"book.pdf";

        // Open the file
        PdfDocument inputDocument = CompatiblePdfReader.Open(filename, PdfDocumentOpenMode.Import);

        PdfDocument outputDocument = new PdfDocument();
        outputDocument.Version = inputDocument.Version;
        outputDocument.Info.Title = "Pages 1 to 30";
        outputDocument.Info.Author = "Slappy";

        outputDocument.AddPage(inputDocument.Pages[1]);

        MemoryStream ms = new MemoryStream();
        outputDocument.Save(ms, false);

        ms.WriteTo(context.Response.OutputStream);

私が理解できないのは、それをWebページ内に表示する方法です。

私はこれを持っています。

<script src="../../Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.media.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.metadata.js" type="text/javascript"></script>

<script>
    $(function () {
        $.ajax({ url: '/GetBookPage.ashx',
            success: function (result) {
                $("a.media").attr('href', result);
                $('a.media').media({ width: 800, height: 600 });
            },
            async: false
        });
    });
</script>

<a class="media">PDF File</a>

上記は、PDFをファイルシステムに保存してから、そのファイルにhrefを指定すると機能します。

4

1 に答える 1

2

次のハンドラーを使用します。

public class GetBookPage : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            string filePath = @"c:\somepath\test.pdf";
            context.Response.ContentType = "application/pdf";
            context.Response.AddHeader("content-disposition", "inline; filename=test.pdf");
            context.Response.WriteFile(filePath);
            context.Response.End(); 
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

次の操作を行うと、PDF をインラインで表示することができました。

<script type="text/javascript">
   $(function () {
        $('a.media').media({ width: 800, height: 600 });
    });
</script>

<a class="media" href="/GetBookPage.ashx?.pdf">PDF File</a>

プラグインは、URL (より正確には拡張子) を使用して、ページ上に適切なメディア コンテナーを構築します。「.pdf」がない場合、期待どおりに動作しません。

于 2012-08-09T03:39:21.050 に答える