这是代码:
//.cs 文件类型,便于外部编辑时使用
// 引用必要的命名空间
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
using System.Threading.Tasks;
public static void Exec(Quicker.Public.IStepContext context)
{
string folderPath = (string)context.GetVarValue("每个文件夹路径"); // 获取图片文件夹路径
string destination = (string)context.GetVarValue("转换后的PDF路径");
if (!string.IsNullOrEmpty(folderPath) && Directory.Exists(folderPath))
{
var imageExtensions = new[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp" }; // 图像文件扩展名列表
var imageFiles = Directory.GetFiles(folderPath)
.Where(f => imageExtensions.Contains(Path.GetExtension(f).ToLower()))
.OrderBy(f => f)
.ToList();
if (imageFiles.Count > 0)
{
PdfDocument doc = new PdfDocument();
// 使用并行处理以加快处理速度
Parallel.ForEach(imageFiles, imagePath =>
{
using (Bitmap bitmap = new Bitmap(imagePath))
{
int width = bitmap.Width;
int height = bitmap.Height;
float dpiX = bitmap.HorizontalResolution;
float dpiY = bitmap.VerticalResolution;
PdfPage pdfPage = doc.AddPage();
pdfPage.Width = XUnit.FromInch(width / dpiX);
pdfPage.Height = XUnit.FromInch(height / dpiY);
using (XGraphics xgr = XGraphics.FromPdfPage(pdfPage))
{
using (MemoryStream stream = new MemoryStream())
{
bitmap.Save(stream, ImageFormat.Png);
stream.Seek(0, SeekOrigin.Begin);
XImage img = XImage.FromStream(stream);
xgr.DrawImage(img, 0, 0, pdfPage.Width.Point, pdfPage.Height.Point);
}
}
}
});
// 保存PDF文件
doc.Save(destination);
doc.Close();
}
else
{
context.SetVarValue("error", "文件夹中没有找到有效的图片文件");
}
}
else
{
context.SetVarValue("error", "未提供有效的图片文件夹路径或文件夹不存在");
}
}
这是报错: