2012-02-18 39 views
5

Tôi đang tạo "tài liệu Word" với tiêu đề trên trang đầu tiên dưới dạng mã HTML. <style> thẻ chứa:Tiêu đề Văn bản HTML Word

@page Section { 
    size:8.5in 11.0in; 
    margin: 0.7in 0.9in 0.7in 0.9in; 
    mso-header-margin: 0.0in; 
    mso-footer-margin: 0.0in; 
    mso-title-page: yes; 
    mso-first-header: fh1; 
    mso-paper-source: 0; 
} 
div.Section { 
    page: Section; 
} 

<body>:

<div class="Section" style="font-family: Verdana, sans-serif;"> 
    <![if supportFields]> 
     <div style="mso-element:header" id="fh1"> 
      <p class="MsoHeader"> 
       header 
      </p> 
     </div> 
    <![endif]> 
</div> 

Nó cho thấy "tiêu đề" text cả trong tiêu đề và trong cơ thể chính của tài liệu. Các tài nguyên (http://techsynapse.blogspot.com/2007/03/generating-word-document-dynamically.html và http://www.pbdr.com/ostips/wordfoot.htm) Tôi đã tìm thấy nói rằng không có cách nào để tránh hiệu ứng này mà không sử dụng tệp tiêu đề bổ sung không phải là một lựa chọn cho tôi.

Và có câu hỏi của tôi: bạn có biết bất kỳ công việc nào cho vấn đề đó không? Làm thế nào tôi có thể ẩn sự xuất hiện của tiêu đề trong tài liệu chính nhưng để nó ở vị trí của nó ở đầu trang? Cảm ơn trước cho bất kỳ lời khuyên nào.

Trả lời

7

này đã làm việc cho tôi:

<html 
xmlns:o='urn:schemas-microsoft-com:office:office' 
xmlns:w='urn:schemas-microsoft-com:office:word' 
xmlns='http://www.w3.org/TR/REC-html40'> 
<head><title></title> 

<!--[if gte mso 9]><xml> 
<w:WordDocument> 
    <w:View>Print</w:View> 
    <w:Zoom>90</w:Zoom> 
</w:WordDocument> 
</xml><![endif]--> 


<style> 
p.MsoFooter, li.MsoFooter, div.MsoFooter 
{ 
    margin:0in; 
    margin-bottom:.0001pt; 
    mso-pagination:widow-orphan; 
    tab-stops:center 3.0in right 6.0in; 
    font-size:12.0pt; 
} 
<style> 

<!-- /* Style Definitions */ 

@page Section1 
{ 
    size:8.5in 11.0in; 
    margin:1.0in 1.0in 1.0in 1.0in; 
    mso-header-margin:.5in; 
    mso-footer-margin:.5in; 
    mso-title-page:yes; 
    mso-header: h1; 
    mso-footer: f1; 
    mso-first-header: fh1; 
    mso-first-footer: ff1; 
    mso-paper-source:0; 
} 


div.Section1 
{ 
    page:Section1; 
} 

table#hrdftrtbl 
{ 
    margin:0in 0in 0in 900in; 
    width:1px; 
    height:1px; 
    overflow:hidden; 
} 
--> 
</style></head> 

<body lang=EN-US style='tab-interval:.5in'> 
<div class=Section1> 

<p> CONTENT </p> 

<br/> 
    <table id='hrdftrtbl' border='0' cellspacing='0' cellpadding='0'> 
    <tr><td> 

    <div style='mso-element:header' id=h1 > 
     <p class=MsoHeader ><p>&nbsp;HEADER-TITLE</p></p> 
    </div> 

    </td> 
    <td> 
    <div style='mso-element:footer' id=f1> 

     <p>&nbsp;FOOTER-TITLE</p> 
     <p class=MsoFooter> 
     <span style=mso-tab-count:2'></span> 
      Page <span style='mso-field-code: PAGE '><span style='mso-no-proof:yes'></span></span> of <span style='mso-field-code: NUMPAGES '></span> 
     </p> 

    </div> 



    <div style='mso-element:header' id=fh1> 

    <p class=MsoHeader><span lang=EN-US style='mso-ansi-language:EN-US'>&nbsp;FIRST-HEADER-TITLE<o:p></o:p></span></p> 

    </div> 

    <div style='mso-element:footer' id=ff1> 

    <p class=MsoFooter><span lang=EN-US style='mso-ansi-language:EN-US'>&nbsp;FIRST-FOOTER-TITLE<o:p></o:p></span></p> 

    </div> 

    </td></tr> 
    </table> 


</body></html> 
+0

Nó luôn hiển thị thêm không gian cho tôi. – Ryan

+1

Không thể tạo hình ảnh trong tiêu đề từ máy chủ nhưng trên máy chủ cục bộ hoạt động tốt. Đường dẫn được tạo ra cho hình ảnh cũng tốt trên máy chủ. Bạn có thể vui lòng cho tôi biết những gì tôi đang thiếu rằng trên hình ảnh localhost đang được thêm vào tập tin từ nhưng trên máy chủ của nó không. ** Lưu ý ** Trên máy cục bộ, tôi đã cài đặt MS-office nhưng trên máy chủ thì không. –

+0

Làm cách nào để xóa một không gian trống trên phần tiêu đề? Khi tôi xem nó trong từ mọi thứ đều ổn nhưng khi in thì không gian trống được thêm vào ... bất kỳ ý tưởng nào? –

3

Để cập nhật về câu trả lời ở trên bởi vencedor và loại bỏ các thêm mã hóa ký tự trống thêm vào hình ảnh header/footer của bạn/văn bản bạn có thể làm một cái gì đó như thế này:

<html 
xmlns:o='urn:schemas-microsoft-com:office:office' 
xmlns:w='urn:schemas-microsoft-com:office:word' 
xmlns='http://www.w3.org/TR/REC-html40'> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title></title> 

<!--[if gte mso 9]><xml> 
<w:WordDocument> 
    <w:View>Print</w:View> 
    <w:Zoom>100</w:Zoom> 
</w:WordDocument> 
</xml><![endif]--> 
<style> 
<!-- /* Style Definitions */ 
p.MsoHeader, li.MsoHeader, div.MsoHeader{ 
    margin:0in; 
    margin-top:.0001pt; 
    mso-pagination:widow-orphan; 
    tab-stops:center 3.0in right 6.0in; 
} 
p.MsoFooter, li.MsoFooter, div.MsoFooter{ 
    margin:0in 0in 1in 0in; 
    margin-bottom:.0001pt; 
    mso-pagination:widow-orphan; 
    tab-stops:center 3.0in right 6.0in; 
} 
.footer { 
    font-size: 9pt; 
} 
@page Section1{ 
    size:8.5in 11.0in; 
    margin:0.5in 0.5in 0.5in 0.5in; 
    mso-header-margin:0.5in; 
    mso-header:h1; 
    mso-footer:f1; 
    mso-footer-margin:0.5in; 
    mso-paper-source:0; 
} 
div.Section1{ 
    page:Section1; 
} 
table#hrdftrtbl{ 
    margin:0in 0in 0in 9in; 
} 
--> 
</style> 
<style type="text/css" media="screen,print"> 
body { 
    font-family: "Calibri", "Verdana","HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; 
    font-size:12pt; 
} 
pageBreak { 
    clear:all; 
    page-break-before:always; 
    mso-special-character:line-break; 
} 
</style> 
</head> 
<body style='tab-interval:.5in'> 
<div class="Section1"> 

Something page 1 
<div class="pageBreak"></div> 
Something page 2 
<div class="pageBreak"></div> 

<table id='hrdftrtbl' border='1' cellspacing='0' cellpadding='0'> 
     <tr> 
      <td> 
       <div style='mso-element:header' id="h1" > 
        <p class="MsoHeader"> 
         <table border="0" width="100%"> 
          <tr> 
           <td> 

            YOUR_HEADER IMAGE/TEXT 

           </td> 
          </tr> 
         </table> 
        </p> 
       </div> 
      </td> 
      <td> 
      <div style='mso-element:footer' id="f1"> 
       <p class="MsoFooter"> 
        <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
         <tr> 
          <td align="center" class="footer"> 
          YOUR_FOOTER_TEXT 
           <g:message code="offer.letter.page.label"/> <span style='mso-field-code: PAGE '></span> of <span style='mso-field-code: NUMPAGES '></span> 
          </td> 
         </tr> 
        </table> 
       </p> 
      </div> 
     </td> 
    </tr> 
    </table> 
    </div> 
</body> 
</html> 

Điều này hiện bao gồm các thành phần css đầy đủ cho phân đoạn đầu trang và chân trang.

Bí quyết thực sự loại bỏ mã hóa bổ sung là khai báo một bảng khác trong phần MsoFooter và MsoHeader.

+0

Rất hữu ích, cảm ơn! Bạn có biết liệu có bất kỳ thuộc tính nào có thể cho phép văn bản nội dung trùng lặp trên phần tiêu đề không? Vì hiện tại văn bản nội dung luôn nằm ngay bên dưới dòng cuối cùng của tiêu đề. –

+1

Hãy xem tại đây http://sebsauvage.net/wiki/doku.php?id=word_document_generation. Chúng tôi đã kết thúc bằng cách sử dụng mô hình mhtml (ở dưới cùng) và nó hoạt động hoàn hảo. Vấn đề với phương pháp hiện tại này là bảng ẩn trong trường hợp của chúng tôi là tạo ra một trang phụ khi trang cuối cùng giảm hơn một nửa. – Vahid

+0

có đó là chính xác hướng dẫn tôi đã sử dụng thành công. Nhưng tôi không quản lý để có văn bản chồng lên tiêu đề. Một tùy chọn khác là sử dụng hình mờ thay vì tiêu đề, nhưng điều đó có nghĩa là chuyển đổi html tiêu đề thành hình ảnh và không dễ dàng:/ Vì vậy, nếu bạn có mẹo để làm cho văn bản nội dung bắt đầu ở đầu trang, thậm chí nếu có tiêu đề, điều đó sẽ tuyệt vời :) –

Các vấn đề liên quan