Turkcell | Geleceği Yazanlar

Soru & Cevap

Webview içinde pdf açma/indirme

04.10.2013 - 10:29

Html5 ile geliştirmiş olduğum projeyi webview içinde yayınladım.
Normal linkleri görüntülemede bir sıkıntı yaşamazken pdfleri görüntüleyemiyorum / indiremiyorum.
 

Daha önce bu konuda çalışma yapan varsa yardımcı olabilir mi?

5632 Görüntülenme

8 Cevap

Mehmet
04.10.2013 - 16:45

eyvallah hocam (: bu çok iyi oldu gerisini hallederim (:

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet Altıparmak
04.10.2013 - 16:40

void Browser_Navigating(object sender, NavigatingEventArgs e)
        {
            e.Uri.AbsoluteUri; //Url burada istediğini yapabilirsin :) 

//Navigation'ı cancel etmek istersen e.Cancel = true ; yapman yeterli. 

        }

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet
04.10.2013 - 16:22

Birşey daha sormak istiyorum.

Açmak istediğim bazı dosyaların uzantısı .pdf değil. Pdf'i bir web sayfasının içerisinde açıyor.
Bu yüzden Android ortamında kullanmış olduğum aşağıdaki koda benzer bir kod kullanmak istiyorum.
 

public boolean shouldOverrideUrlLoading (WebView view, String url) {

        if (url.startsWith("http://mobile")){

        return true;

        }

        else

        {

                 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));

                 return true;   

        } 

        } 

eğer uzantı http://mobile.  ile başlamıyorsa dışarı çıkmasına izin verecek.

Android'te kullanmış olduğum bu kod yapısını C# ile yazmam mümkün müdür?

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet Altıparmak
04.10.2013 - 15:31

Progress aslında bir ProgressBar nesnesi, sayfamda bir adet de ProgressBar vardı o satırları kaldırabilirsin istersen. Ya da uygulamanda sayfalar arası geçiş yaparken ekranda bir progress göstermek istersen sen de ekleyebilirsin. Basitçe Navigating handler'ında aktif hale getirip, Navigated ve NavigationFailed handlerlarında pasif hale getirebilirsin. 

void Browser_NavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            Progress.Visibility = Visibility.Collapsed;
            Progress.IsEnabled = false;
        }

        void Browser_Navigated(object sender, NavigationEventArgs e)
        {
            Progress.Visibility = Visibility.Visible;
            Progress.IsEnabled = true;
        }

Sayfa xaml'ı da şu şekilde, 

<Grid x:Name="LayoutRoot" Background="Transparent">
       <phone:WebBrowser x:Name="Browser" />
        <ProgressBar x:Name="Progress" HorizontalContentAlignment="Stretch" IsIndeterminate="True" VerticalAlignment="Center" />
    </Grid>

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet
04.10.2013 - 14:01

Mehmet bey,

Yukarıdaki kodda bulunan şu kısmı alıp projeme dahil ettim.

 

void Browser_Navigating(object sender, NavigatingEventArgs e)
        {
            Progress.Visibility = Visibility.Visible;
            Progress.IsEnabled = true;

            var extension = Path.GetExtension(e.Uri.AbsoluteUri);
            if (!String.IsNullOrEmpty(extension) && extension == ".pdf")
            {
                Launcher.LaunchUriAsync(e.Uri);
                e.Cancel = true;

            }
        }

 

 

Yalnız  "Progress" ifadesinde hata verdi. Bu kısmı kullanmak için özel bir kütüphane tanımlamam gerekiyor mu?

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet
04.10.2013 - 11:20

Teşekkür ederim Adaş :)

Deneyip sonucu haber edeceğim.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet Altıparmak
04.10.2013 - 11:13

Arka planda dosya indirmeyi gösteren örneğe buradan ulaşabilirsin buarada. 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Mehmet Altıparmak
04.10.2013 - 11:10

Merhaba Adaş :) 

WebBrowser control'ünün pdf görüntüleme yeteneği bulunmuyor ne yazık ki. Yönlendirilen URL'in pdf olup olmadığını kontrol edip, pdf olduğu durumda download ettirebilirsin uygulamana. Ya da LauncherUriAsync fonksiyonunu kullanarak IE'a yönlendirebilirsin, IE pdf açmayı destekleyen bir uygulama var ise sistemde ona yönlendirecektir. Örneğin Adobe PDF Reader. Yölendirilen URL'i WebBrowser'ın Navigating event handler'i içerisinde kontrol etmen mümkün aşağıdaki gibi.

public MainPage()
        {
            InitializeComponent();
            Loaded += MainPage_Loaded;
            Browser.Navigating += Browser_Navigating;
            Browser.Navigated += Browser_Navigated;
            Browser.NavigationFailed += Browser_NavigationFailed;
        }

        void Browser_Navigating(object sender, NavigatingEventArgs e)
        {
            Progress.Visibility = Visibility.Visible;
            Progress.IsEnabled = true;

            var extension = Path.GetExtension(e.Uri.AbsoluteUri);
            if (!String.IsNullOrEmpty(extension) && extension == ".pdf")
            {
                Launcher.LaunchUriAsync(e.Uri);
                e.Cancel = true; //Ya da dosyayı indirecek kod bloğunu ekleyebilirsin buraya. 

            }
        }

        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            Browser.Navigate(new Uri("http://www.inkwelleditorial.com/pdfSample.pdf", UriKind.Absolute));
        }

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.