Преобразование документа XML библиотеки SharePoint в документ PDF с использованием C # - PullRequest
0 голосов
/ 12 марта 2019

Фон

У меня есть среда SharePoint 2013 (SP2013) (env), в которой перестали работать Word Automation Services (WAS), поэтому моему приложению не удается преобразовать XML-документы в PDF.

Предыдущий статус

Я использую OpenXML SDK для преобразования документа XML InfoPath в документ Word (работает как положено). Затем преобразуйте документ Word в PDF, используя WAS на SP.

Текущий статус

БЫЛО перестало работать. Мое приложение конвертирует XML в Word, но никогда не конвертирует в PDF. В качестве пробела я использую фрагмент кода C # (показанный ниже), чтобы попытаться преобразовать в PDF, но получаю сообщение об ошибке "Ссылка на объект не установлена ​​на экземпляр объекта."

...
using Word = Microsoft.Office.Interop.Word;
...

string fileName = generatedDoc; //generatedDoc is Word doc converted from XML
string pdfFileName = fileName.Replace("docx", "pdf");
string sourceUrl = siteUrl + "/DocLibMemo/" + fileName;
string destUrl = siteUrl + "/ApprovedMemoPDF/" + pdfFileName;

Convert(sourceUrl, destUrl, Word.WdSaveFormat.wdFormatPDF);

public static void Convert(string input, string output, Word.WdSaveFormat format)
{
    // Create an instance of Word.exe
    Word._Application oWord = new Word.Application();

    // Make this instance of word invisible (Can still see it in the taskmgr).
    oWord.Visible = false;
    oWord.ScreenUpdating = false;

    // Interop requires objects.
    object oMissing = System.Reflection.Missing.Value;
    object isVisible = false;
    object readOnly = false;
    object doNotSaveChanges = Word.WdSaveOptions.wdDoNotSaveChanges;
    object oInput = input;
    object oOutput = output;
    object oFormat = format;

    // Load a document into our instance of word.exe
    Word._Document oDoc = oWord.Documents.Open(
        ref oInput, ref oMissing, ref readOnly, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref isVisible, ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // Make this document the active document.
    oDoc.Activate(); // The execption is hit here

    // Save this document using Word
    oDoc.SaveAs(ref oOutput, ref oFormat, ref oMissing, ref oMissing,
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing);

    // Always close Word.exe.
    oWord.Quit(ref oMissing, ref oMissing, ref doNotSaveChanges);
}

Приведенный выше фрагмент работал, когда я тестировал его с помощью консольного приложения, а файлы Word находились на моем диске C. Однако теперь, когда файлы Word находятся в библиотеке SP, они не преобразуются в PDF.

1 Ответ

0 голосов
/ 12 марта 2019

Я столкнулся с той же проблемой.Библиотека SharePoint - это сетевой диск, который не имеет физического расположения.Файлы SharePoint действительно сохраняются в базе данных, поэтому мы не можем писать и сохранять файлы в библиотеке SharePoint.MS Office использует другой подход к сохранению файлов в библиотеке SP, он фактически загружает файлы, а не сохраняет их напрямую.

Решение проблемы заключается в том, чтобы взять локальную копию файла Word и внести изменения в локальную копию.и загрузите (т.е. скопируйте) его в то же место в библиотеке SharePoint.

Надеюсь, это поможет.

Спасибо.

...