将一些不同格式的图片插入PDF的时候,报异常,经过调式发现是图片格式不能被识别,这个图片的格式就是 Webp。下面是代码。
///
/// 将大量的jpg图片插入PDF文件
///
/// 网页标题名称
///
public static void JpegTopdf(string pdfFileName)
{
//string[] imgPaths = Directory.GetFiles("../.././Image/" + pdfFileName + "");
string[] imgPaths = Directory.GetFiles(@"C:\Users\Gait-x\Desktop\webp");
string pdfPath = @"E:\盘到的漫画\1.pdf";
iTextSharp.text.Image image = null;
System.Drawing.Image DrawingImage = null;
//创建一个 iTextSharp.text.Document 对象的实例,当创建一个文件时,你还可以定义上、下、左、右页边距
Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 25, 25, 25, 25);
try
{
using (var stream = new FileStream(pdfPath, FileMode.Create, FileAccess.Write, FileShare.None))
{
try
{
//为该Document创建一个Writer实例
iTextSharp.text.pdf.PdfWriter pdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, stream);
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
document.Open();//打开当前Document
for (int i = 0; i < imgPaths.Length; i++)
{
var Format = Program.CheckTextFile(imgPaths[i]);
image = iTextSharp.text.Image.GetInstance(imgPaths[i]);
if (image.Height > iTextSharp.text.PageSize.A4.Height - 25)
{
image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
}
else if (image.Width > iTextSharp.text.PageSize.A4.Width - 25)
{
image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
}
image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
document.NewPage();
document.Add(image);//为当前Document 添加内容
}
document.Close();//关闭Document
Console.WriteLine("转换成功!");
}
}
catch (Exception e)
{
document.Close();
Console.WriteLine(e.Message + "\t" + e.StackTrace);
}
}
异常信息为:is not a recognized imageformat. 我认为是这个API的问题,不能接收这种图片格式。随后我想试着把webp格式转换成jpg格式再调用该方法试一下,结果还是不行。只能碰下运气看哪个路人甲能为我解惑了。
建议你找一个原版的jpg文件试一下 ,webp这种格式官方没有提一定支持