2011-02-04 4 views
6

Attualmente sto generando un file .doc come html usando asp.NET.Inserire un'interruzione di pagina in un HTML generato .doc

Desidero inserire un'interruzione di pagina sulla pagina ma non so come.

Ho provato a usare css style = 'page-break-before: always' ma non fa nulla.

Questo è il codice assegnato a un evento click del pulsante:

HttpContext.Current.Response.Clear(); 
    HttpContext.Current.Response.Charset =""; 

    HttpContext.Current.Response.ContentType ="application/msword"; 

    string strFileName = "GenerateDocument"+ ".doc"; 
    HttpContext.Current.Response.AddHeader("Content-Disposition","inline;filename=" + strFileName); 

    StringBuilder strHTMLContent = new StringBuilder(); 

    strHTMLContent.Append("<p align='Center'>Content Before Page Break</p>".ToString()); 

    strHTMLContent.Append("<br><br>".ToString()); 
    strHTMLContent.Append("<p class='pageBreak' style='mso-special-character:line-break;'>meh</p>".ToString()); 

    strHTMLContent.Append("<br><br>".ToString()); 
    strHTMLContent.Append("<p align='Center'>Content After Page Break</p>".ToString()); 

    HttpContext.Current.Response.Write(strHTMLContent); 
    HttpContext.Current.Response.End(); 
    HttpContext.Current.Response.Flush(); 
+0

Stai creando un documento MS Word con HTML? –

+0

Affermare che il documento è MS Word non lo rende MS Word. Rende solo l'applicazione che l'utente ha configurato per gestire i documenti di Word tenta di elaborare un documento HTML. Se vuoi servire un documento MS Word, allora generane uno reale. Non inviare HTML avvolto in un fascio di bugie. – Quentin

+0

Forse starai meglio guardando le specifiche di 'docx' - Potresti generarlo in un modo simile e dare un formato supportato piuttosto che sperare che la parola/qualunque programma gestisca i file' doc' possano raccogliere i pezzi – Basic

risposta

1

Non so che cosa la notazione dell'Ufficio di ciò è, ma vorrei creare un documento con un'interruzione di pagina in Word, salvarlo come HTML e guarda cosa usa.

Indovinare dal blocco di codice si mostra, si potrebbe essere

mso-special-character:page-break; 
+0

Ho già provato questo senza risultato. Sto indovinando che MS lo toglie quando apre un file html? – baked

-2

Non generare file di MS Word con HTML

Lei non vorrebbe costruire una casa con la progetti per una barca, vero?

Se desideri eseguire questa operazione a livello di codice ti suggerisco di dare un'occhiata al formato docx o anche alle specifiche del formato RTF e spostarti da lì. Ma in tutta probabilità, stai andando nella direzione sbagliata e ci sono già delle librerie che puoi usare.

vi consiglio di start here

+1

No, OF COURSE che usare oggetti OLE o andare alle specifiche docx è un passo INDIETRO, non in avanti. Sì, quelle specifiche non sembrano solo allettanti, ma per di più le ho conosciute e mi sono anche innamorata di loro in passato. MA implicano INIZIO AGAIN per formattare un documento. Imparare a trasformare da html a doc SUPERSEDES questo, nel senso che uno sforzo (un buon sforzo, ovviamente) funzionerebbe sia per una pagina web che per un documento word modificabile, o anche un documento stampato. UNO sforzo, UN cambiamento che riguarda ogni cosa ogni volta, non dovendo ricominciare ogni volta. –

15

Word ha le sue classi speciali. mso-special-character: page-break; funziona in questa situazione, come citato da Pekka, tuttavia ciò che manca è che questo dovrebbe essere su un tag > br <. Così il seguente codice funziona:

<br clear=all style='mso-special-character:line-break;page-break-before:always'> 

non è particolarmente bella soluzione, ma nel mio caso non avevo scelta (non ho scritto il codice originale, ed è stato un lavoro molto più grande di cambiarlo).

+0

Questa è un'ottima risposta che funziona davvero fuori dagli schemi. – Greg0ry