2014-03-13 99 views
0

我在asp.net網站上使用OpenXML從模板創建Word文檔,並通過altChunk從其他模板向其他模板添加其他節,並添加HTML片段(也作爲altChunk)和圖片。一切工作正常,除了我的模板有一個目錄表(TOC),並用正確的頁碼和正確的標題(對於添加的部分)更新它,最終用戶必須選擇TOC並更新它(通過擊中F9,或從上下文菜單中單擊更新字段)。即使如此,他們仍然必須在更新頁碼或更新整個表格(最終用戶感到困惑)之間進行選擇。自動更新TOC

我真的想避免這一步,因爲我想在文檔就像是在後臺自動生成要準備好去不看。

我嘗試添加一個UpdateOnFieldsOpen到文檔的設置,但是當他們打開該文檔僅會導致混亂(對最終用戶)嘮叨屏幕。

我想過也許試圖手動更新OpenXML中的TOC,方法是估計每個添加部分的長度(以頁爲單位)(它們應該是相當恆定的+/-頁),以便至少提供一個相當準確的TOC當用戶第一次打開文檔時,但看起來不太健壯。

Word自動化可能會解決這個問題,但不推薦在服務器端使用。

有沒有更好的解決方案呢?似乎很傻,我可以任意插入其他文檔和HTML塊,而無需任何投訴,但更新TOC是一個主要的安全問題!

回答

1

正如你無疑意識到,這個問題與更新TOC自動是一種常見的抱怨。

在Java世界中,docx4j企業(即商業)版本可以解決這個問題[披露:我公司],通過生成整個TOC獨立的Word。

順便說一句,在docx4j社區版也可以XHTML altChunk轉換爲本地/生的WordML,這是獲得TOC權的重要的第一步。您可以在.NET環境中使用它;見http://www.nuget.org/packages/docx4j-ImportXHTML.NET/3.0.1

甲左場解決方案可能是調用LibreOffice的(例如,經由JODConverter);它會自動更新TOC而不提示。

+0

謝謝你的迴應傑森。我想知道ODF會不會更容易,但是我沒有想到只用LibreOffice和docx文件。我會研究一下。不知道是否有Open/LibreOffice的版本將無法運行服務器... –

+0

嗯......看起來LibreOffice Writer破壞了我的佈局,並且不處理docx altChunk。 –