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中的图像。它将是我正在构建的文档管理系统的一部分,因此它必须简单易用