Почему мой код не может найти путь в проекте? - PullRequest
0 голосов
/ 28 апреля 2019

Я использую это для объединения 2 файлов пэдов:

public static void MergePages(string outputPdfPath, string[] lstFiles)
{
    lstFiles = new string[2] { @"Downloads\Certificates\119.FDV-3686.pdf", 
                               @"Downloads\Certificates\119.FDV-3686.pdf" };
    outputPdfPath = @"Downloads\Certificates\";

    PdfReader reader = null;
    Document sourceDocument = null;
    PdfCopy pdfCopyProvider = null;
    PdfImportedPage importedPage;
    sourceDocument = new Document(); 
    pdfCopyProvider = new PdfCopy(sourceDocument,
    new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
    sourceDocument.Open();
    try
    {
        for (int f = 0; f < lstFiles.Length - 1; f++)
        {
            int pages = 1;
            reader = new PdfReader(lstFiles[f]);
            //Add pages of current file
            for (int i = 1; i <= pages; i++)
            {
                importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                pdfCopyProvider.AddPage(importedPage);
            }
            reader.Close();
        }
        sourceDocument.Close();
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

В моем каталоге проекта есть 2 файла, но выдает ошибку:

Не удалось найти часть пути 'C: \ Program Files (x86) \ IIS Express \ ~ \ Downloads \ Certificates \ 119.FDV-3686.pdf'.

Я не понимаю, почему он идет на диск C, поскольку файлы находятся в одном проекте.

enter image description here

1 Ответ

2 голосов
/ 28 апреля 2019

(1) Одной из проблем может быть то, что ваши pdf-файлы времени разработки не копируются в выходной каталог приложения во время компиляции.Поэтому они недоступны во время выполнения.

Если вы хотите скопировать файлы из папки вашего решения в выходной каталог приложения, вы можете установить свойство файла " Копировать в выходной каталог "to" Копировать всегда"или" Копировать, если новее".Более подробное обсуждение темы, например, здесь .

Свойства файла можно установить, выбрав файл в обозревателе решений.

(2) Другая проблема заключается в том, что вы не задаетекорневой каталог пути к файлу.Я рекомендую вам указать путь к файлу в следующем стиле:

var rootLocation = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase.ToString()).LocalPath);
var filePath1  = Path.Combine(rootLocation,@"Downloads\Certificates\filename1.pdf"); 
var filePath2  = Path.Combine(rootLocation,@"Downloads\Certificates\filename2.pdf"); 
..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...