我想使用c#,xaml将pdf文件转换为UWP中的图像UI控件。
我已经阅读了另一种使用Flip Viewer的方法,但是我需要转换后的PDF文件中的每个图像文件。
所以我修改了一些现有示例以打开pdf文件。
我的问题是转换后的图像文件的质量非常差。
我什至看不到字母。
但是此质量问题在其他pdf样本中相同。
看看我的代码。
private PdfDocument pdfDocument;
private async void LoadDocument()
{
pdfDocument = null;
//Output means my image UI control (pdf image will be added)
Output.Source = null;
//PageNumberBox shows current page
PageNumberBox.Text = "1";
var picker = new FileOpenPicker();
picker.FileTypeFilter.Add(".pdf");
StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
try
{
pdfDocument = await PdfDocument.LoadFromFileAsync(file);
}
catch (Exception ex)
{
}
if (pdfDocument != null)
{ // I use this text to move page.
PageCountText.Text = pdfDocument.PageCount.ToString();
}
}
uint pageNumber;
if (!uint.TryParse(PageNumberBox.Text, out pageNumber) || (pageNumber < 1) || (pageNumber > pdfDocument.PageCount))
{
return;
}
Output.Source = null;
// Convert from 1-based page number to 0-based page index.
uint pageIndex = pageNumber-1 ;
using (PdfPage page = pdfDocument.GetPage(pageIndex))
{
var stream = new InMemoryRandomAccessStream();
await page.RenderToStreamAsync(stream);
BitmapImage src = new BitmapImage();
Output.Source = src;
await src.SetSourceAsync(stream);
}
}
这是我的xaml代码。
<Grid>
<ScrollViewer >
<TextBlock Name="ViewPageLabel"VerticalAlignment="center">Now page</TextBlock>
<TextBox x:Name="PageNumberBox" InputScope="Number" Width="30" Text="1" TextAlignment="Right" Margin="5,0,5,0"
AutomationProperties.LabeledBy="{Binding ElementName=ViewPageLabel}"/>
<TextBlock VerticalAlignment="Center">of <Run x:Name="PageCountText"/>.</TextBlock>
</ScrollViewer>
</Grid>
有什么建议吗?
请帮助我。
感谢阅读。
答案 0 :(得分:0)
听起来您遇到了一个常见问题,您需要动态调整将PDF页面呈现给图像的分辨率。
我对那个PDF库不熟悉,但是看来您需要使用需要 PdfPageRenderOptions 参数的 RenderToStreamAsync() 重载来实现。 / p>