Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp仅从列表中添加一个图像<;图像>;_C#_.net_List_Pdf_Itext - Fatal编程技术网

C# iTextSharp仅从列表中添加一个图像<;图像>;

C# iTextSharp仅从列表中添加一个图像<;图像>;,c#,.net,list,pdf,itext,C#,.net,List,Pdf,Itext,我想添加列表中的所有图像,但它只添加最后一个图像。我尝试使用var而不是System.Drawing.Image,但没有效果。此外,我还尝试更改行的顺序,以确保这不是某种逻辑错误,但也没有帮助 SaveFileDialog svg = new SaveFileDialog(); svg.ShowDialog(); Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); PdfWriter wri

我想添加
列表中的所有图像,但它只添加最后一个图像。我尝试使用
var
而不是
System.Drawing.Image
,但没有效果。此外,我还尝试更改行的顺序,以确保这不是某种逻辑错误,但也没有帮助

SaveFileDialog svg = new SaveFileDialog();
svg.ShowDialog();
Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35);
PdfWriter wri = PdfWriter.GetInstance(doc, new FileStream(svg.FileName + ".pdf", FileMode.Create));

doc.Open();
foreach (System.Drawing.Image image in images)
{ 
    iTextSharp.text.Image im = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Tiff);

    if (im.Height > im.Width)
    {            
        float percentage = 0.0f;
        percentage = 700 / im.Height;
        im.ScalePercent(percentage * 100);
    }
    else
    {
        float percentage = 0.0f;
        percentage = 540 / im.Width;
        im.ScalePercent(percentage * 100);
    }

    im.Border = iTextSharp.text.Rectangle.BOX;
    im.BorderColor = iTextSharp.text.BaseColor.BLACK;
    im.BorderWidth = 3f;
    doc.Add(im);
    doc.NewPage();
}
doc.Close();
有什么问题
foreach
可以很好地在
pictureboxs
中显示这些图像。我不明白为什么它不能与
iTextSharp

一起工作,因为您的代码确实能按预期工作

要么您没有查看正确文件夹中的正确输出
pdf
文件,要么您的循环中没有不同的图像(根据您编写的内容,前者更可能是…)

无论如何,我可以确认你文章中的代码生成了具有不同图像的页面

编辑

例如,首先尝试在不使用文件对话框的情况下设置输出文件路径,然后按照简单的教程了解如何管理对话框的事件处理程序

另外,请尝试在之前将图像保存到磁盘(以便以后可以再次检查它们),然后从文件中加载它们

            System.Drawing.Image[] images = new System.Drawing.Image[3];
            images[0] = System.Drawing.Image.FromFile(@"\\My Pictures\pic1.bmp");
            images[1] = System.Drawing.Image.FromFile(@"\\My Pictures\pic2.JPG");
            //etc...
您的代码确实按预期工作

要么您没有查看正确文件夹中的正确输出
pdf
文件,要么您的循环中没有不同的图像(根据您编写的内容,前者更可能是…)

无论如何,我可以确认你文章中的代码生成了具有不同图像的页面

编辑

例如,首先尝试在不使用文件对话框的情况下设置输出文件路径,然后按照简单的教程了解如何管理对话框的事件处理程序

另外,请尝试在之前将图像保存到磁盘(以便以后可以再次检查它们),然后从文件中加载它们

            System.Drawing.Image[] images = new System.Drawing.Image[3];
            images[0] = System.Drawing.Image.FromFile(@"\\My Pictures\pic1.bmp");
            images[1] = System.Drawing.Image.FromFile(@"\\My Pictures\pic2.JPG");
            //etc...

图像在哪里定义?这可能就是问题所在。图像的定义类似于
public List Images{get;set;}
,我通过扫描过程填充
List
Images=this.ScannerDevice.PerformScan().ToList()。之后,我将这些图像显示在
flowLayoutPanel
中的小
图片框中
,因此我确信这些图像存在于
列表中
哪里定义了
图像
?这可能就是问题所在。图像的定义类似于
public List Images{get;set;}
,我通过扫描过程填充
List
Images=this.ScannerDevice.PerformScan().ToList()。之后,我将这些图像显示在
flowLayoutPanel
的小
图片框中,因此我确信这些图像存在于
列表中
我从扫描仪获取图像
images=this.ScannerDevice.PerformScan().ToList()。稍后,我在
flowLayoutPanel
中通过
foreach循环
显示
列表
中的那些图像,因此我非常确定图像在那里。删除输出pdf,直接将路径作为字符串写入,而不使用SaveFileDialog,并检查PGMSADY再次创建的路径,它不起作用。路是好的。当我打开pdf时,会添加最后获取的图像。以前的图片不在那里。我开始认为它在同一页上一个接一个地添加图像,但代码看起来很好me@fox您能将图像保存到磁盘并从文件中加载它们吗?把我编辑的最后几行作为开始,我不太理解这个问题,但它必须易于使用,而不需要不必要的内存浪费。我想象在完成此操作后,可以从
flowLayoutPanel
中选择要添加到PDF中的图像。它将是我正在构建的
文档管理系统的一部分,因此它必须简单方便。我从扫描仪获取图像
images=this.ScannerDevice.PerformScan().ToList()。稍后,我在
flowLayoutPanel
中通过
foreach循环
显示
列表
中的那些图像,因此我非常确定图像在那里。删除输出pdf,直接将路径作为字符串写入,而不使用SaveFileDialog,并检查PGMSADY再次创建的路径,它不起作用。路是好的。当我打开pdf时,会添加最后获取的图像。以前的图片不在那里。我开始认为它在同一页上一个接一个地添加图像,但代码看起来很好me@fox您能将图像保存到磁盘并从文件中加载它们吗?把我编辑的最后几行作为开始,我不太理解这个问题,但它必须易于使用,而不需要不必要的内存浪费。我想象在完成此操作后,可以从
flowLayoutPanel
中选择要添加到PDF中的图像。它将是我正在构建的
文档管理系统的一部分,因此它必须简单易用