Я использую C# для преобразования .doc в .pdf. .Doc находится на сайте поставщика. Чтобы получить .doc, мы должны нажать на кнопку, которая предоставляет нам опцию Open, Save, or Cancel
. Когда пользователь нажимает кнопку Save
, он запрашивает местоположение. Пользователь выбирает местоположение в подключенном диске, скажем, S:\Some Folder\abc.doc
, а фактическое местоположение папки - \\server\\folder\Some Folder
. Здесь моя программа входит в игру. Я использую класс FileSystemWatcher
в C# с фильтром, установленным для файлов .doc. Я могу отлаживать, что файл найден. Расположение папки жестко запрограммировано и сохранено как фактическое местоположение папки, упомянутое выше. Пользователь и приложение имеют полное разрешение на доступ к папке. Однако, когда я запускаю программу, я получаю FileNotFoundException
.Преобразование документа в pdf с использованием Interop.Word C#
Это то, что у меня есть
WriteToFile("Starting Word application");
Application word = new Application();
object missing = Type.Missing;
var sourcefile = new FileInfo(path);
// check if the created file ends with .doc.
System.Diagnostics.Debug.WriteLine(path);
if (!path.ToLower().EndsWith(".doc"))
{
return "";
}
word.Visible = false;
WriteToFile("Opening doc as read only");
// open readonly
System.Diagnostics.Debug.WriteLine(sourcefile.FullName);
var doc = word.Documents.Open(FileName: sourcefile.FullName, ReadOnly: true);
Странная вещь sourcefile.FullName
не показывает жесткий кодированный адрес сервера, который path
установлен в. Он показывает путь к файлу как S:\Some Folder\abc.doc
, что не имеет для меня никакого смысла. Что здесь происходит, и почему он не может найти файл?
Работает ли она в ожидании в среде IDE, если вы ждете несколько секунд после события FSW, но до того, как будет запущен код выше? –
Я этого не пробовал. Я сейчас. Но, что еще больше беспокоит, даже если я предоставляю исходный файл жестко закодированным как «\\ server \ ...», отладчик все еще говорит мне, что он не может найти 'S: \ Some Folder \ abc.doc'. Моя программа ничего не знает о диске S. Итак, как это выбрать, если только он не считывает атрибут файла из самого имени файла, который он нашел, правильно? – user1828605
@AlexK. Ты был прав. Я должен был ждать несколько секунд после события FSW. Я добавил Thread.Sleep (5000) перед запуском кода и после того, как было запущено событие FSW OnCreated. Это работало безупречно. Извините, мне потребовалось некоторое время, чтобы поработать над этим. Не могли бы вы добавить свой комментарий в качестве ответа, чтобы я мог отметить его как правильный ответ? Спасибо. – user1828605