【问题标题】:How Open PDF files on Xamarin WebView如何在 Xamarin WebView 上打开 PDF 文件
【发布时间】:2017-09-11 07:33:12
【问题描述】:

我正在尝试使用 webview 和 我能够使用以下方法做到这一点:

protected override void OnCreate(Bundle savedInstanceState)
{
        base.OnCreate(savedInstanceState);
        RequestWindowFeature(WindowFeatures.NoTitle);
        SetContentView(Resource.Layout.ViewReport);

        var mywebview = FindViewById<WebView>(Resource.Id.webView1);

        var myurl= "http://docs.google.com/gview?embedded=true&url=http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf";

        mywebview.Settings.AllowFileAccess = true;
        mywebview.Settings.JavaScriptEnabled = true;
        mywebview.Settings.BuiltInZoomControls = true;
        mywebview.LoadUrl(myurl);

        mywebview.SetWebViewClient(new PodWebViewClient());


}

我的问题是我尝试打开的 PDF 文件是通过 Itextsharp 从我的 MVC 项目中创建的:

public ActionResult Print() 
{

        var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 25, 25);
        var output = new MemoryStream();
        var writer = PdfWriter.GetInstance(document, output);
        document.Open();
        string contents = System.IO.File.ReadAllText(Server.MapPath("~/Content/HTMTemplate/pdf_template.htm"), Encoding.Unicode);

        //====================
        // do something here...
        //====================

        FontFactory.Register(Server.MapPath("~/fonts/ARIALUNI.TTF"));

        StyleSheet ST = new StyleSheet();
        ST.LoadTagStyle(HtmlTags.BODY, HtmlTags.FACE, "Arial Unicode MS");
        ST.LoadTagStyle(HtmlTags.BODY, HtmlTags.ENCODING, BaseFont.IDENTITY_H);

        var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(contents), ST);
        foreach (var htmlElement in parsedHtmlElements)
            document.Add(htmlElement as IElement);
        document.Close();

        var cd = new System.Net.Mime.ContentDisposition
        {
            FileName = "samplepdf.pdf",
            Inline = true
        };

        Response.AppendHeader("Content-Disposition", cd.ToString());//open in browser
        return File(output.ToArray(), "application/pdf");
}

但是当我执行以下操作时:

 var myurl= "http://docs.google.com/gview?embedded=true&url=http://www.sample.com/doc/print";

我看到的是一个带有 html 标签的文本文件,而不是我的 pdf 文件。

我应该如何解决这个问题?我认为我的问题在于我的 pdf 文件,但我不知道是哪个,因为我能够在浏览器中打开 pdf。希望你能帮助我。谢谢。

【问题讨论】:

    标签: xamarin webview xamarin.android


    【解决方案1】:

    使用pdf.js 并这样称呼它

    Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", WebUtility.UrlEncode(pdfWebView.Uri)));
    

    Here 您可以找到有关此方法的更多详细信息(用于 Xamarin.Forms)。

    【讨论】:

    • 不幸的是,pdfjs 有很大的问题。对我来说最大的问题是pdfjs不支持触摸手势!!!!!!即您无法使用触摸手势导航和缩放文档!对我来说,它不可用,任何用户都不能接受。
    • 我找到了不响应手势的解决方案。 stackoverflow.com/a/56943170/592651
    猜你喜欢
    • 1970-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2018-08-19
    • 2012-07-21
    相关资源
    最近更新 更多