Ako zobraziť PDF dokument vo Windows 8.1 aplikácii.

Najskôr predstavím výsledok – aplikáciu, ktorá zobrazuje brožúrku o ovládaní Windows 8.1. Aplikáciu Ovládanie Windows 8.1 nájdete vo Windows Obchode http://apps.microsoft.com/windows/app/ovladanie-windows-8-1/9664c57f-bc54-42bf-9647-5a88cc071a52

V aplikácii bola použitá funkcionalita z namespace Windows.Data.Pdf, ktorá umožní rendrovať obrázok z vybranej časti PDF dokumentu. PDF dokument pripojte k aplikácii napríklad do adresára Assets, pričom parameter BuildAction nastavte na Content. Aplikácia bola urobená na báze šablóny Split App.

Do XAML kódu vložte obrázok do prvku ScrollViewer aby bolo možné horizontálne rolovanie ak používateľ zúži aplikáciu napríklad až na na 500 pixelov, prípadne vertikálne rolovanie väčších dokumentov.


<ScrollViewer


x:Name=”itemDetail”


AutomationProperties.AutomationId=”ItemDetailScrollViewer”


DataContext=”{Binding SelectedItem, ElementName=itemListView}”


HorizontalScrollBarVisibility=”Auto” VerticalScrollBarVisibility=”Disabled”


ScrollViewer.HorizontalScrollMode=”Auto” ScrollViewer.VerticalScrollMode=”Disabled”


ScrollViewer.ZoomMode=”Disabled” Loaded=”itemDetail_Loaded”>


<Image
x:Name=”Image1″ AutomationProperties.Name=”A placeholder image” Source=”Assets/MediumGray.png” Stretch=”None” HorizontalAlignment=”Left” VerticalAlignment=”Top” SizeChanged=”Image1_SizeChanged”
/>


</ScrollViewer>

 

Majte na pamäti, že obrázok sa na rôznych displejoch zobrazuje s rôznou mierkou. Preto treba jeho veľkosť aktuálne prepočítať podľa mierky Scale

Rendrovanie dokumetu, v tomto prípade jednej strany zariadi procedúra

private
PdfDocument _pdfDocument;

private
string PDFFILENAME = “Assets\\brozura.pdf”;

private
bool bLoaded = false;

uint nVyskaObrazku=300;

 

private
async
Task RenderPDFPage(string pdfFileName, uint prvaStrana )

{


double dSirkaOkna, dVyskaOkna, dScale, dSirkaPdf, dZoom;


try

{


StorageFile pdfFile = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(pdfFileName);

_pdfDocument = await
PdfDocument.LoadFromFileAsync(pdfFile); ;

 


if (_pdfDocument != null && _pdfDocument.PageCount > 0)

{


var pdfPage = _pdfDocument.GetPage((uint)prvaStrana);

 


if (pdfPage != null)

{


// generovanie bitmapy strany pdf dokumentu


StorageFolder tempFolder = ApplicationData.Current.TemporaryFolder;


StorageFile jpgFile = await tempFolder.CreateFileAsync(Guid.NewGuid().ToString() + “.png”, CreationCollisionOption.ReplaceExisting);

 


if (jpgFile != null)

{


DisplayInformation displayInformation = DisplayInformation.GetForCurrentView();


ResolutionScale scale = displayInformation.ResolutionScale;


double scaleValue = (int)scale /100.0;

 


IRandomAccessStream randomStream = await jpgFile.OpenAsync(FileAccessMode.ReadWrite);


PdfPageRenderOptions pdfPageRenderOptions = new
PdfPageRenderOptions();

 

dSirkaOkna = Window.Current.Bounds.Width – 350;

dVyskaOkna = (Window.Current.Bounds.Height – 230) / scaleValue;

 

 


//tbOznam.Text = dVyskaOkna.ToString();

 

pdfPageRenderOptions.DestinationHeight = (uint)dVyskaOkna;

 


await pdfPage.RenderToStreamAsync(randomStream, pdfPageRenderOptions);


await randomStream.FlushAsync();

randomStream.Dispose();

pdfPage.Dispose();


await DisplayImageFileAsync(jpgFile);

}

}

}

}


catch (Exception err)

{

tbOznam.Text = “Error: “ + err.Message;

}

}

 

 

 

Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s


%d bloggers like this: