C#代码,在visual studio中成功运行,移植到Quicker提示此错误。
using System;
using System.IO;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
public class PdfPageExtractor
{
// Quicker将会调用的函数
public static void Exec(Quicker.Public.IStepContext context)
{
string inputPdfPath = (string)context.GetVarValue("PDF文件");
string password = (string)context.GetVarValue("PDF密码");
string outputFolder = (string)context.GetVarValue("输出文件夹");
int startPage = (int)context.GetVarValue("起始页面");
int endPage = (int)context.GetVarValue("结束页面");
string error = ExtractPages(inputPdfPath, startPage, endPage, outputFolder, password);
context.SetVarValue("错误信息", error);
}
public static string ExtractPages(
string inputPdfPath,
int startPage,
int endPage,
string outputFolder,
string password)
{
// 检查输出文件夹是否存在,如果不存在则创建它
if (!Directory.Exists(outputFolder))
{
Directory.CreateDirectory(outputFolder);
}
try
{
// 打开PDF文件,如果有密码则使用密码,否则打开无密码的PDF
PdfDocument inputDocument = !string.IsNullOrEmpty(password)
? PdfReader.Open(inputPdfPath, password, PdfDocumentOpenMode.Import)
: PdfReader.Open(inputPdfPath, PdfDocumentOpenMode.Import);
// 检查起始和结束页面是否有效
if (startPage < 1 || startPage > inputDocument.PageCount)
{
return "起始页面无效!";
}
if (endPage < startPage || endPage > inputDocument.PageCount)
{
return "结束页面无效!";
}
// 创建新的PDF文档以存储提取的页面
PdfDocument outputDocument = new PdfDocument();
// 将指定范围的页面从输入文档复制到输出文档
for (int pageIndex = startPage - 1; pageIndex < endPage; pageIndex++)
{
outputDocument.AddPage(inputDocument.Pages[pageIndex]);
}
// 为输出文件生成文件名
string outputFileName = startPage + "_to_" + endPage + ".pdf";
// 构造输出文件的完整路径
string outputPath = Path.Combine(outputFolder, outputFileName);
// 保存输出文档到指定路径
outputDocument.Save(outputPath);
}
catch (PdfReaderException)
{
// 如果打开PDF文件时出现错误,可能是密码错误或文件损坏
return "密码错误或无法读取PDF文件!";
}
catch (Exception ex)
{
// 捕获其他可能的异常并返回错误信息
return "发生错误: "+ex.Message;
}
// 如果没有错误发生,返回空字符串
return string.Empty;
}
}