public PublisherObject() { using (new WsActivationContext()) { m_realImpl = new CDocumentPublisherClass(); } }
private void PublishWithWord(IDocumentPublisher6 publisher, string sourceFilename, string destinationFilename) { if (null == publisher) return; OfficeApplicationCache officeApplicationCache = OfficeApplicationCache.Instance; Word._Application wordApplication = officeApplicationCache.GetHostApplication(FileType.WordDocument) as Word._Application; if (wordApplication == null) { return; } bool wasVisible = wordApplication.Visible; try { object document = officeApplicationCache.OpenDocument(sourceFilename, false, FileType.WordDocument); WordFieldsUnlinker unlinker = new WordFieldsUnlinker(document); unlinker.UnlinkFilenameFields(); publisher.ReconstructHyperLinks = (bool) m_actionPropertySet[PdfActionStringTable.ReconstructHyperLinks].Value; publisher.PublishActiveWordDocument(destinationFilename, document, null, 0); officeApplicationCache.CloseDocument(document, true); // true parameter (savechanges): previously false, but in some situations word still asks to save. // see VE3155, but basically where old style headers (as per our redline), and with word open, and there is a DMS. (Incomprehensible perfect storm!) } finally { wordApplication.Visible = wasVisible; } }
private void Publish(IDocumentPublisher6 publisher, string sourceFilename, string destinationFilename) { if (null == publisher) return; OfficeApplicationCache officeApplicationCache = OfficeApplicationCache.Instance; FileType fileType = OfficeApplicationCache.GetFileTypeBasedOnFilename(sourceFilename, true); switch (fileType) { case FileType.WordDocument: case FileType.WordDocumentX: case FileType.WordDocumentMacroX: case FileType.WordDocumentTemplateX: case FileType.WordDocumentMacroTemplateX: PublishWithWord(publisher, sourceFilename, destinationFilename); break; case FileType.ExcelSheet: case FileType.ExcelSheetX: case FileType.ExcelSheetMacroX: case FileType.ExcelSheetTemplateX: case FileType.ExcelSheetMacroTemplateX: PublishWithExcel(publisher, sourceFilename, destinationFilename); break; case FileType.PowerPoint: case FileType.PowerPointX: case FileType.PowerPointMacroX: case FileType.PowerPointTemplateX: case FileType.PowerPointMacroTemplateX: case FileType.PowerPointShowX: case FileType.PowerPointMacroShowX: PublishWithPowerPoint(publisher, sourceFilename, destinationFilename); break; default: return; } }
public void Dispose() { Marshal.ReleaseComObject(m_realImpl); m_realImpl = null; }