Array
(
)

Manipulando DOC - Interop

Gabi
   - 19 mar 2015

Estou com o seguinte problema, preciso manipular o um arquivo word (onde encontra-se o modelo para a geração de um certificado). Utilizei o Microsoft Office Interop, e consegui fazer tudo que desejava, porém quando fui testar no servidor, descobri que o Interop apenas iria funcionar se o Word tivesse instalado no servido, o que não é aconselhado.
Sendo assim preciso de uma nova forma de fazer as alterações no arquivo, onde não seja necessário a instalação do Office no servidor.
Detalhe que preciso fazer um replace de dados utilizando o modelo, onde mantenha todas as configurações do modelo, preciso que o arquivo seja convertido para PDF e que nao necessite office no servidor.
Abaixo segue o código que utilizando o Interop, que faz tudo que preciso
#Código

object urlDocx = Server.MapPath(urlDoc);
        object missing = System.Reflection.Missing.Value;

        Application wordApp = new Application();
        Document wordDoc = wordApp.Documents.Open(urlDocx, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, false, missing, missing, missing, missing);

        object FindText = "";
        object ReplaceWith = "";
        object MatchWholeWord = true;
        object Forward = false;
        object replaceAll = WdReplace.wdReplaceAll;

        Range oRng = wordDoc.Range(ref missing, ref missing);

        foreach (var parametro in parametros)
        {
            oRng = wordDoc.Range(ref missing, ref missing);
            FindText = parametro.Key;
            ReplaceWith = parametro.Value;
            oRng.Find.Execute(ref FindText, ref missing, ref MatchWholeWord, ref missing, ref missing, ref missing, ref Forward,
                             ref missing, ref missing, ref ReplaceWith, ref replaceAll, ref missing, ref missing, ref missing, ref missing);
        }

        string novoDOC = System.IO.Path.GetTempFileName();
        wordDoc.SaveAs(novoDOC, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);

        string tempDOC = System.IO.Path.GetTempFileName().Replace(".tmp", ".PDF");
        wordDoc.ExportAsFixedFormat(@tempDOC, Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, true);
        wordDoc.Close(Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges, Microsoft.Office.Interop.Word.WdOriginalFormat.wdOriginalDocumentFormat, false);
        wordApp.Quit();
.

Jothaz
   - 19 mar 2015

Já pensou em gerar o .DPF direto com iTextSharp?