运行c#代码提示:指定的转换无效

使用问题 · 1832 次浏览
白起1996 创建于 2023-04-19 20:36

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;
    }
}


回复内容
CL 2023-04-19 20:39
#1

右键调试运行一下看看有没有更详细的信息。 转换无效可能是变量类型不匹配。 可以尝试用Convert.ToInt32(context.GetVarValue(...))的方式转换整数(quicker内部使用的long类型,小数用的double类型)

白起1996 回复 CL 2023-04-19 20:41 :


白起1996 回复 CL 2023-04-19 20:43 :

运行成功!!

回复主贴