Domanda

Sto lavorando a un sito di deposito di informazioni per la prevenzione dell'HIV. Molti collaboratori pubblicheranno articoli tramite una GUI di tinyMCE.

I grafici, ovviamente, vogliono avere il controllo sulla lunghezza delle pagine. Vorrebbero l'impaginazione automatica in base all'altezza del contenuto nella pagina.

Qualcuno ha visto il codice AJAX per gestirlo?

Escludendo che qualcuno ha visto il codice PHP che può fare un conteggio dei caratteri e una regex look-behind per evitare di dividere parole o tag?

Qualsiasi link molto apprezzato!

È stato utile?

Soluzione

Se non è necessario che sia esatto, non vi è alcun motivo per cui non è possibile utilizzare una semplice funzione di conteggio parole per determinare un luogo appropriato in cui interrompere la pagina (suppongo al paragrafo più vicino). Potresti arrivare al punto di ridurre le parole per pagina in base alla presenza di immagini nel post, anche tenendo conto della dimensione delle immagini.

Ciò potrebbe diventare brutto in fretta, penso che il modo migliore per farlo sia consentire loro di impostare manualmente i divisori di pagina con un tag nell'articolo che puoi analizzare. Qualcosa come [pagebreak] è piuttosto semplice e otterrai interruzioni di pagina molto più logiche e leggibili rispetto a qualsiasi soluzione automatizzata raggiungerebbe.

Altri suggerimenti

Non devi solo preoccuparti del conteggio dei personaggi, ma devi anche preoccuparti delle altezze delle immagini se ci sono immagini o altri tipi di oggetti incorporati nelle tue pagine che possono salire di altezza. Inoltre, il conteggio dei caratteri non ti darà un'idea della struttura del paragrafo (un singolo paragrafo lungo con più caratteri di una pagina con molti paragrafi potrebbe essere più breve).

Se sei disposto a utilizzare JavaScript, questa potrebbe essere la soluzione ideale, pubblica l'intero articolo sul client e lascia che JavaScript gestisca l'impaginazione. Dal client è possibile rilevare altezze di immagini e oggetti. Puoi usare PHP per posizionare i marker su dove pensi che dovrebbero essere le pagine, e quindi usare JavaScript per realizzarlo. A meno che le pagine non siano molto lunghe, non credo che dovrai fare diversi xmlHttpRequests (AJAX).

Per una semplice soluzione PHP è anche semplice, ma probabilmente non è l'ideale in quanto non si tratta di gestire i conteggi delle righe. Puoi utilizzare una variabile GET per determinare dove ti trovi nella pagina.

Anche se questa potrebbe non essere la risposta esatta che stai cercando, ma dovresti davvero assicurarti che il tuo sito non abbia un'altezza fissa. Le larghezze flessibili sono davvero belle, ma non così importanti come l'altezza.

Soprattutto per una causa come questa e un sito ricco di contenuti; è giusto richiedere altezze flessibili.

Come accennato da Apphacker, non puoi davvero rilevare l'altezza dall'interno di PHP e sei un po 'bloccato con javascript. Se sei assolutamente bloccato con il paging, è probabilmente meglio lasciare che i tuoi autori di contenuti decidano quando interrompere la pagina, quindi lo spezzi su una sezione reale, anziché a metà parola, frase, ecc.

Modifica: l'usabilità dovrebbe dettare il design, non viceversa. Stai sbagliando;)

Una buona impaginazione non è un compito semplice. Non è una semplice questione di codifica. La ricerca scientifica di Plass (1981) ha dimostrato che l'interruzione di pagina ottimale è generalmente NP-difficile. Dovresti preoccuparti di figure fluttuanti, interruzioni di riga, diversi stili di carattere, ecc.

E l'unica cosa che un motore HTML può aiutarti è analizzare una pagina su un albero DOM. E le taglie? Sì, potresti avere la larghezza e l'altezza del carattere, i margini e le imbottiture, le dimensioni delle immagini. Ma questo è tutto. Tutto il layout è sulle tue spalle. E farlo in javascript ... meh ...

Quindi l'unica soluzione possibile dell'impaginazione automatica ad altezza fissa sarebbe un lato server. PrinceXML è attualmente il miglior convertitore HTML2PDF. Ma costa molto.

Se sei bravo con diverse altezze di pagina, puoi usare il suggerimento di epalla. Ma anche questo non è così semplice come sembra.

Alcuni riferimenti per l'impaginazione:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top