我想在UI中加载扫描的第一页(在连接的扫描仪中),但是现在在此代码中,最后一页加载在UI中。谁能分析代码并告诉我确切的结构是什么,以便显示第一页? enter image description here
/// <summary>
/// Loads the invoice in the UI, with its associated data.
/// </summary>
private void ShowImFromPDF()
{
IoC.Main.InvoiceCount = IoC.Main.Invoices.Count;
GlobalVars.WriteLog("Updating image and data");
if (IoC.Main.InvoiceIndex >= 0 && IoC.Main.InvoiceIndex < IoC.Main.Invoices.Count)
{
IoC.Main.LoadInfo = true;
PdfDocument document = PdfReader.Open(IoC.Main.Invoices[IoC.Main.InvoiceIndex].Path);
foreach (PdfPage page in document.Pages)
{
foreach (System.Drawing.Image image in page.GetImages())
{
pictureBox1.Source = HelperMethods.ToBitMapImage(image);
}
}
答案 0 :(得分:0)
正如我在评论中写道
它看起来像foreach
循环会覆盖所有图像,这就是为什么看起来好像最后一张图片的原因,您应该使用类似page.GetImages().FirstOrDefault()
的图像
我的意思是,您要遍历pdf中的所有页面以及页面中的所有图像,并将每个页面放到相同的pictureBox
如何使用FirstOrDefault:
这将获取可为null的int列表,这意味着该项目可以为int或null
public static void doStuff(List<int?> nullableList)
{
var firstItem = nullableList.FirstOrDefault();
if (firstItem != null)
Console.WriteLine(firstItem);
else
Console.WriteLine("first item is null");
}
发送示例
List<int?> nullableList = new List<int?>() { 1, null, 2, 3, null };
doStuff(nullableList);
List<int?> nullableList1 = new List<int?>() { null, null, 2, 3, null };
doStuff(nullableList1);
结果
1
“第一项为空”
根据您的逻辑,您应该从y页面获取x图片