asp.net 将PDF文档转换为PNG文件

zpgglvta  于 2023-10-21  发布在  .NET
关注(0)|答案(1)|浏览(141)

我在Visual Studio中使用c#asp.net,我的函数是这样的

protected string ConvertPdfToPng()
{
    List<string> results = new List<string>();

    // Imposta il percorso dei file PDF e PNG
    string pdfDirectory = @"C:\pdf\";
    string imageDirectory = @"C:\immagini\";

    // Elenco dei file PDF nella cartella
    string[] pdfFiles = System.IO.Directory.GetFiles(pdfDirectory, "*.pdf");

    foreach (string pdfFile in pdfFiles)
    {
        try
        {
            // Crea il nome del file PNG basato sul nome del file PDF
            string pdfFileName = System.IO.Path.GetFileNameWithoutExtension(pdfFile);
            string pngFileName = pdfFileName + ".png";
            string pngFilePath = System.IO.Path.Combine(imageDirectory, pngFileName);

            // Usa ImageMagick per convertire il PDF in PNG
            using (Process process = new Process())
            {
                process.StartInfo.FileName = "magick";
                process.StartInfo.Arguments = $"convert \"{pdfFile}\" \"{pngFilePath}\"";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.CreateNoWindow = true;
                process.Start();
                process.WaitForExit();
            }

            string successMessage = $"Convertito {pdfFile} in {pngFilePath}";
            results.Add(successMessage);
        }
        catch (Exception ex)
        {
            string errorMessage = $"Errore durante la conversione di {pdfFile}: {ex.Message}";
            results.Add(errorMessage);
        }
    }

    //return Convert.ToString(results);
    //string testo = results.ToString();
    string testo = string.Join(Environment.NewLine, results);
    return (testo);
}

我不知道为什么它会给我这个错误
转换C:\pdf\test.pdf时出错:无法找到指定的文件错误中报告的文件的位置和名称是正确的我给了两个文件夹的读写权限
我正在尝试ImageMagick,但如果你知道一个更好,更容易使用的程序,我可以改变。
我试着给每个人对这两个文件夹的读写权限,并以系统管理员的身份运行visual studio。

irlmq6kh

irlmq6kh1#

我解决了这个解决方案,我感谢大家,特别是KJ的指针

protected string  ConvertFirstPdfToPng(string pdfDirectory, string outputDirectory)
{
    List<string> results = new List<string>();
    try
    {
        string popplerPath = @"D:\poppler-23.08.0\Library\bin\pdftoppm.exe";

    int resolutionDpi = 300;

        // Ottieni una lista di file PDF nella directory specificata
        string[] pdfFiles = Directory.GetFiles(pdfDirectory, "*.pdf");

        if (pdfFiles.Length > 0)
        {
            // Prendi il primo file PDF trovato (puoi personalizzare questa logica)
            string pdfFilePath = pdfFiles[0];

            // Crea un nuovo processo
            Process process = new Process();

            // Specifica il file .exe da eseguire (pdftoppm.exe)
            process.StartInfo.FileName = popplerPath;

            
            // Specifica gli argomenti del comando
            process.StartInfo.Arguments = $"-r {resolutionDpi} -png \"{pdfFilePath}\" \"{outputDirectory}\\output\"";
            

            // Imposta la directory di lavoro del processo (se necessario)
            process.StartInfo.WorkingDirectory = outputDirectory;

            // Abilita la creazione di una finestra per il processo (potrebbe essere necessario a seconda dell'applicazione)
            process.StartInfo.CreateNoWindow = false;

            // Avvia il processo
            process.Start();

            // Attendi che il processo termini
            process.WaitForExit();

            // Chiudi il processo
            process.Close();

            string successMessage = "Convertito";
            results.Add(successMessage);
        }
        else
        {
            string nofile= "Nessun file PDF trovato nella directory specificata.";
            results.Add(nofile);
            
        }
    }
    catch (Exception ex)
    {
        // Gestisci eventuali eccezioni qui
        string error = ("Errore durante la conversione del PDF in PNG: " + ex.Message);
        results.Add(error);
    }

string testo = string.Join(Environment.NewLine, results);
return (testo);

}

相关问题