Я пытаюсь преобразовать DOCX в PDF с помощью «Microsoft Print to PDF» на С#. Некоторые объекты моего документа являются рисунками, и я не могу «Сохранить как» без деструктуризации.
С печатью «Microsoft Print to PDF» все в порядке, поэтому я хочу выполнить это действие с помощью своей программы на С#. Мне нужно обработать 3000 файлов.
Я пробую этот код. Он выполняет печать PDF и создает неправильный файл, но это только пустые страницы.
//path is my docx path
Application appWord = new Application();
wordDocument = appWord.Documents.Open(path);
PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = "Microsoft Print to PDF";
pd.PrinterSettings.PrintToFile = true;
pd.PrinterSettings.PrintFileName = pdf_path;
pd.Print();
Я думаю, что я что-то упускаю, я не понимаю, что.
И я не знаю, может ли wordDocument
быть streamReader
в некоторых примерах в Интернете.
Спасибо за вашу помощь !
Какое отношение код, открывающий документ Word, имеет к коду, печатающему PDF? Я не вижу никакой связи между ними - вы открываете документ Word, затем вы просто создаете новый документ принтера и сохраняете его. То, что вы открывали документ Word в какой-то момент в прошлом, не означает, что создание документа для печати приведет к его печати?
@Aousafrashid Рисунки старые. Это был объект CorelDraw, но на данный момент это «Неизвестный объект» для docx.
Вы ничего не печатаете к этому PrintDocument
. Вы открыли сам Слово с помощью appWord
, но затем попытались распечатать в приложении твой, не отправляя содержимое на принтер. Если вы открыли Word намеренно, вы также можете печатать из него с помощью Документ.Распечатка
Спасибо за все ваши ответы.
Эти (простые) строки работают нормально:
Application appWord = new Application();
wordDocument = appWord.Documents.Open(path);
wordDocument.PrintOut(
OutputFileName:pdf_path,
PrintToFile: true
);
path
- мой исходный путь docx
pdf_path
— это путь к целевому файлу PDF.
Я надеюсь, что эта тема может помочь кому-то.
Для тех, кто еще застрял, библиотека Microsoft.Office.Interop.Word.Application appWord = new Microsoft.Office.Interop.Word.Application();
Рисунки, которые вы упомянули, можно просто нарисовать, нарисовав объекты/изображения. У меня есть образец, я поищу. Если найду, поделюсь кодом.