Raccomandazione? per il nostro specifico progetto HTML -> PDF

Ho una domanda che vedo da googling è stata discussa a lungo .. ma voglio sapere cosa consiglieresti in base alle nostre particolari esigenze. Voglio essere sulla strada giusta prima di scoprire a-week-of-work più tardi che ho scelto lo strumento sbagliato (uno strumento che funziona, ma la cui peculiarità, alla fine, lo escluderebbe per il nostro progetto).

Ho letto alcuni bei thread su Stack Overflow già su questo argomento .. ma hanno persone che fanno raccomandazioni in tutta la mappa … come mi aspetterei – in generale, i nostri bisogni e le nostre esperienze sono dappertutto sulla mappa. E ancora, qui voglio sapere cosa consiglieresti data la nostra situazione specifica.

Abbiamo una pagina HTML dynamic che visualizza 30 “etichette di indirizzi” all’interno delle dimensioni di un singolo documento in formato lettera USA. Vogliamo che l’utente sia in grado di stampare la singola pagina in formato lettera e avere il contenuto allineato perfettamente (come nel browser) per la carta adesiva (stampata) con l’etichetta dell’indirizzo Avery che useranno per sbucciare i 30 adesivi e apposta al prodotto fisico. La pagina HTML è di ~ 200K di HTML (div e tabelle), testo, gif, jpg, un codice PNG con codice a barre e un uso massiccio di CSS esatti – CSS2 e un touch di CSS3 (trasformazione di proprietà CSS3), ovvero:

/* --- for firefox, safari, chrome, etc. --- */ -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); /* --- for ie --- */ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); 

… che uso per ruotare (90 gradi) un codice a barre che prelevo da questo sito / servizio: http://www.barcodesinc.com/generator/index.php

Potremmo rilasciare quel codice a barre PNG / servizio solo se potessi facilmente sostituirlo con un altro … e il codice a barre deve essere ruotato di 90 gradi – per adattarlo così al suo piccolo slot (orientato verticalmente) su ciascuna etichetta di indirizzo da 30 ” cellule”.

  • Vorrei avere un budget per la versione server di PrinceXML 😉 … ma senza fortuna.
  • Non ho mai usato alcuna libreria PHP come FPDF o TCPDF, ma sono preoccupato per la velocità; gli utenti aziendali (su vari browser) avranno bisogno del pdf in tempo reale. Possono essere pazienti e attendere il PDF finale se mantenere la soluzione libera .. ma se ci vogliono minuti per generare, questo è un punto negativo.
    Inoltre non sono sicuro di quanto siano validi per HTML -> PDF (al contrario del PDF diretto da zero). Inoltre non sono sicuro di quanto sia buono il supporto CSS. La nostra pagina è un po ‘un kludge HTML / CSS.
  • Ho usato gli strumenti da riga di comando HTMLDOC e wkpdf, ma il primo mancava del CSS di cui ho bisogno ora, e quest’ultimo introduce un margine che lo uccide per la formattazione esatta delle etichette di indirizzi (più questo progetto è su Linux).

Le mie competenze PHP non sono ancora molto forti … ma sono disposto a fare tutto il ansible per mettere insieme qualsiasi soluzione. Nel caso abbiate dimestichezza con qualsiasi strumento di generazione di PDF che ritenete sarebbe adatto alle necessità qui, quindi si prega di avvisare !

Se stai cercando qualcosa come Prince XML ma senza la spesa, proverei DocRaptor.com . È un generatore di pdf online che converte da HTML. Ho usato il piano gratuito ed è stato abbastanza facile.

In bocca al lupo!

Nate

Il mio solito suggerimento per queste cose è wkhtmltopdf . La tua trasformazione di webkit dovrebbe funzionare, così come qualsiasi altra cosa che funziona tra i browser web kit.

Fair Warning: non l’ho usato da solo.

Sei impostato su una soluzione HTML-> PDF? Non vorrei seguire questa strada: l’HTML non è mai stato concepito per la stampa … non ha il concetto di pagine e le differenze nel sistema operativo, nel browser, nei font installati, ecc. Possono rendere tutto così preciso come l’etichetta che stampa un incubo. Perché non generare direttamente il PDF e ignorare del tutto l’HTML?

Sfortunatamente, non ho mai fatto il tipo di generazione PDF automatizzata di cui stai parlando. Se dovessi incidere qualcosa velocemente, le prime due cose che mi vengono in mente sono:

  • Genera output PS e alimenta un’utilità come ps2pdf
  • Genera output TeX e pdflatex a pdflatex

Mi preoccuperei della robustezza e della velocità di entrambi: dipenderebbe pesantemente da quante richieste stai processando al secondo.

Guardando l’output ldd per gs ( ps2pdf ), sembrerebbe che potrebbe usare Cairo per la generazione di PDF. Ci sono collegamenti PHP, C, Python, ecc. Disponibili per Cairo.

Non ti consiglio di provare a convertire il tuo HTML in PDF. Esattamente come sei stato in grado di ottenere in HTML, la conversione non conserverà mai quella precisione.

Ho usato FPDF e ho scoperto che è abbastanza veloce per la generazione di PDF in tempo reale anche di documenti complessi. FPDF consente il posizionamento preciso (misurato in pollici o unità preferite) di elementi su una pagina PDF, quindi l’allineamento non dovrebbe essere un problema. Sospetto che troverai molto più semplice generare il PDF che generare HTML.

Ci sono script forniti dagli utenti per la generazione di codici a barre, in modo che tu possa farlo all’interno di FPDF se lo desideri. Oppure puoi incorporare un’immagine che hai generato altrove.

EDIT: Solo per il follow up, ho controllato il sito FPDF e c’è uno script con l’utente per generare etichette in formati Avery comuni. Sono meno di 200 righe di codice, quindi, anche se vuoi scriverne di tue, sospetto che tu possa farlo abbastanza facilmente.

Alla fine, abbiamo lanciato PrinceXML (tramite il servizio pay-as-you-go “docRaptor”. Grazie a Nate per il suggerimento). A partire da ora Prince non riconosce la trasformazione CSS3 di cui avevo bisogno per ruotare il codice a barre nel nostro pdf .. ma ho trovato un altro generatore di codici a barre che lo ruota al momento del disegno, prima di servire .. quindi ha funzionato. Potrebbero esserci modi migliori per generare pdf … ma per quelli di noi che passano tutto il nostro tempo a hackerare pagine web, c’è qualcosa di molto soddisfacente nell’avere generato PDF formattati esattamente come sorgente HTML / CSS. Ho scoperto che tutto il trambusto per Prince è ben meritato. Grazie a tutti quelli che hanno risposto.