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?