Korzystanie z XSL-FO, CSS3 zamiast CSS2 do tworzenia stron dokumentów, takich jak PDF?

Istnieje wiele starych tekstów, takich jak Ta książka z 2002 roku, stwierdzająca, że musimy używać "CSS dla Web" i "XSL-FO dla print". Myślę, że w dzisiejszych czasach (2012) możemy wreszcie użyć CSS z silnikami renderującymi, które rozumieją paged media z CSS2 i coś z CSS3... Ale gdzie "nowe teksty", konsensus programistów i inwestycja softhouses?

XSL-FO lub "xsl formatowanie obiektów" (standard W3C) był najczęściej używaną technologią do generowania PDF dokumenty, z zawartości XML lub XHTML. Wersja 1.1 Z XSL-FO został opublikowany w 2006 roku, 1.0 w 2001 roku.

CSS2. 1 pochodzi z 2011 roku, ale CSS2.0 to standard z 1998 roku, zmieniony w 2008 roku... Myślę, że standardowy wiek nie stanowi problemu. CSS z HTML, XHTML lub XML mają "moc drukowania" : zobacz narzędzia takie jak PrinceXML, WebKit print module (or wkhtmltopdf), ABCpdf i inne.

Wybór pomiędzy CSS i XSL-FO: z CSS2 można dopasować tekst dokładnie do strony papieru, itp. Nie chodzi o stronicowanie, układ wielu kolumn, umieszczanie przypisów, uruchamianie nagłówków czy marginesów strony... Zarówno CSS (paged media), jak i XSL-FO, są do tego dobrymi standardami.

PS: istnieje kilka powiązanych pytań / odpowiedzi dla tego kontekstu, o transformacji webkit, konwersja za pomocą PHP i około Generowanie PDF z HTML . Nikt z dobrą odpowiedzią na to pytanie.

Author: Community, 2012-05-17

5 answers

Dzięki wszystkim komentarzom i odpowiedziom!

Teraz, 2014, minął ponad 1,5 roku mojego postu (Maj 17 '12), nadszedł czas na konsolidację: żadna odpowiedź nie była dla mnie "pełną odpowiedzią", ale wszystkie odpowiedzi (patrz nenotlep i Alex) przyczyniły się do utworzenia dużego obrazu. Moja główna motywacja teraz, do konsolidacji, jest @mzjn wiadomości (tutaj) z 2013-11.

XSL-FO oficjalnie umiera

On Sob, 2013-11-02, Liam R. E. Quin napisał : "zamknęliśmy Grupę Roboczą ponieważ za mało osób brało udział " , W3C XML Activity Lead, o niepowodzeniu XSL-FO 2.0 ciągłości. (zobacz lepsza Kopia tutaj ).

Ostatnia aktualizacja projektu roboczego była w styczniu 2012 roku, a teraz potwierdzone: W3C przestać rozwijać XSL-2 .

Dlaczego? Zostanie ona zastąpiona przez CSS3-page , patrz poniżej.

PS: aby omówić "oficjalne oświadczenie", użyj https://stackoverflow.com/a/21345449/287948

CSS3 jest oficjalnie rośnie

Standard CSS3-pagejest szkicem, ale wiele aplikacji, takich jak PrinceXML v9i Antennahouse Formatter v6 pokazało, że jest gotowy (!); i, oczekiwane uruchomienie HTML5 dla 2014 jest kontynuacją prognozy wydania CSS3.

Rozumiem więc, że dla W3C, CSS3-page robi wszystko, czego potrzebujemy, aby wyrazić dobre wydruki i dobre PDF.

Inne motywacje

Pewnego dnia, w dalekiej przyszłość... PDF będzie martwy - jest złożony i nie jest częścią rodziny XML lub inwestycji W3C-i wielu twierdzi, że EPUB zastąpi go. Jest to kolejna dobra motywacja: czytniki tabletów i przeglądarki PC będą drukować (HTML, XHTML i EPUB), a także PDF. Więc PDF nie będzie konieczne... I, na ten dzień, jedyną standardową potrzebą, ex. Webkit printing project , będzie standardem CSS3-page .

CSS3 jest kluczowym punktem w dwóch strategicznych sprawach: 1) generowanie dobry PDF z zawartości XML lub HTML; 2) aby zastąpić PDF.


Uwaga: kolejne aktualizacje 2014 dla linków pytania: wkHtmlToPDF jest teraz tutaj . O "nowych tekstach", teraz mamy wiele, patrz ex. budowanie książek z CSS3 .



Zaktualizowana odpowiedź dla programistów, na pytanie tej strony, Dlaczego używać XSL-FO zamiast CSS2, aby przekształcić HTML w dobry PDF?

Jeśli pójdziesz dalej i wdrożysz nowy system dla XML-Publishing, nie ma powodu, aby używać XSL-FO. Podsumowanie:

  • XSL-FO jest dziś martwą technologią, używaną tylko przez niszowe firmy, aby zapewnić konserwację starszych systemów w dużych firmach wydawniczych, takich jak Elsevier... Większość pisarzy / czytelników Stackoverflow pochodzi z małych i średnich firm. Firmy takie jak O ' Reilly Media, Inc. już używaj CSS3 do drukowania .

  • CSS3 zastąpi CSS2, obejmując wszystkie luki (i obawy @AlexS) CSS2.

  • Dzisiaj (2014), jak można sprawdzić przez Google lub moje linki (patrz PrinceXML v9 i Antennahouse Formatter v6), mamy dobre oprogramowanie do renderowania treści z CSS2 lub CSS3 .

  • Jak mówi @bytebuster, "CSS jest znacznie łatwiejszy do opracowania" (i łatwiejszy do nauczenia się!).

  • Jak mówię powyżej, CSS3 nie jest odizolowany, jest fragmentem rodziny "XML/HTML/SVG".

  • Na znacznie tańsze jest tworzenie " szablonów HTML+CSS "(koszt godzinowy standardowego Web Designera wykonującego proste zadanie), niż "szablonów XSL-FO" (koszt godzinowy rzadkiego profesjonalisty w złożonym zadaniu).

  • ....



Wiadomości...

Styczeń'2016, Ostateczny standard CSS3 nadchodzi!

W 2004 roku, w ramach projektu, w którym projekt został uruchomiony, w 2006 roku, w ramach projektu, w 2007 roku, w 2008 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku, w 2009 roku... Teraz jest to zalecenie kandydata, zobacz https://www.w3.org/TR/css-break-3
 30
Author: Peter Krauss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:21

Zaktualizowano 01.10.2015

Kiedyś robiłem CSS do PDF (wkhtmltopdf) i XSL-FO do PDF i wolę CSS, ale jest z nim wiele problemów. IMO najlepszym rendererem CSS / HTML do PDF jest wkhtmltopdf, ale ma mnóstwo problemów, takich jak problemy z jakością druku, problemy z łamaniem stron, kolorowanie CMYK, dokładne pozycjonowanie i renderowanie pełnoekranowe.

Wymagania jak "przesuń pudełko 1,8 mm w prawo i w górę tak, aby dotyczyło górnej części papieru" i " potrzebujemy ostatnia strona, która ma być w 100% szeroką tabelą marginless" , jest całkiem wykonalna w XSL-FO, ale w CSS jest to zbyt przerażające, aby nawet rozważyć. W niektórych przypadkach CSS po prostu nie tnie go jako wystarczająco dobre oprogramowanie, aby renderować go, nawet jeśli znaczniki tak robią. Nawet wkhtmltopdf (0.11, Nie wiem co później) używa XSLT podczas renderowania spisu treści i nie obsługuje @page.

Nie mogę mówić za PrinceXML, ponieważ chociaż wygląda świetnie, wiem z góry, że cena byłaby niemożliwa, więc nie jest to opcja-podejrzewam, że dotyczy to wielu deweloperów i firm.

Gdyby było lepsze oprogramowanie do renderowania i więcej użytkowników, naprawdę uważam, że CSS byłby lepszą opcją zazwyczaj, ponieważ jest o wiele przyjemniej pisać (zarówno css, jak i source (x) html) i jest mnóstwo edytorów. To trochę jak stara debata Linux vs Windows - IMO Linux jest ładniejszy w użyciu, ale brakuje oprogramowania, istniejącej wiedzy i wsparcia, które jest często wymagane.

I echo komentarzy, materiał źródłowy jest zawsze problemem z CSS. CSS dla XML jest trochę niezbadanym terytorium i prawie wszystko wszędzie jest XML. Niestety. Mam poważną niechęć do XML, mimo że jest praktycznie o wiele bardziej użyteczny niż (X)HTML.

 9
Author: Nenotlep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 12:18:39

Jednym z możliwych powodów, dla których w przyszłości można korzystać z CSS zamiast XSL-FO, jest to, że grupa robocza XML Print and Page Layout Working Group w W3C nie jest już aktywna. Nie było wystarczającego zainteresowania, aby utrzymać tę grupę roboczą. Grupa opublikowała roboczy projekt XSL 2.0 na początku 2012 roku, ale teraz wydaje się dość mało prawdopodobne, że kiedykolwiek pojawi się zaktualizowane zalecenie W3C.

Na liście dyskusyjnej XSL-List pojawił się ostatni wątek o powodach zamknięcia pracy Grupa I O przyszłości XSL-FO vs. CSS. Zobacz http://markmail.org/thread/65j2ah2kulcp35fm .

A tak przy okazji, mimo, że jest to ciekawy temat, nie jestem pewien, czy pytanie pasuje do przepełnienia stosu. IMHO, to raczej otwarte zaproszenie do dyskusji, a nie pytanie o konkretny, praktyczny, odpowiadający problem.

 4
Author: mzjn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:00

Zgadzam się z tym co napisał @Nenotlep. Ale nie jestem pewien, czy znaczniki CSS są jeszcze tak obszerne dla dokumentów z Paginami, jak XSL-FO. Ale nie wiedziałbym tego.

Dodałem również tę część do jego odpowiedzi, ponieważ nie byłem w stanie" skomentować " odpowiedzi.

Jest trochę historii w całej sprawie.

DODATKOWO, bogactwo XSL-FO i jego nauki i Krzywa wypalania w ciągu ostatnich 10+ lat na renderowaniu FO miało sporo czasu, aby uzyskać " więcej" wszystko wyprostowane.

Byłem odpowiedzialny za proof of concept i prototypowanie korporacyjnego systemu związanego z treścią XML dla Fortune 20 w 2003 roku.

Jeden z elementów tego systemu musiał renderować wersje PDF, Word, x / HTML dokumentów w locie, gdy ludzie zmieniali, dodawali i modyfikowali zawartość XML.

Nawet XSL - FO > PDF i do Word-ML miały wtedy sporo problemów z ząbkowaniem.

Były one nieodłączne ze względu na następujące przyczyny:

  • Oryginalne i nowe cele i możliwości języków znaczników i stylizacji
  • [17]} zdolność i ograniczenia końcowego komponentu renderującego do dokładnego reprezentowania podanego znacznika (np. XSL-FO do komponentu PDF lub X/HTML do wyświetlania przez przeglądarkę internetową)

Minęło 10 lat, odkąd często byłem w rękach XSL-FO / HTML / CSS, ale powyższe kwestie były interesujące do omówienia z bogami świata XML / XSL w tym czasie (Dave Pawson, Michael Kay, Wendell Piez itp.)

Jest całkiem możliwe, że wszystkie reprezentacyjne znaczniki, które XSL-FO miał nad CSS dla stron wyjściowych, jest teraz (2013) prawdopodobnie replikowane w CSS3 i jest renderowane odpowiednio.

Mam nadzieję, że to pomoże.

2017 Edit:

Najwyraźniej CSS wciąż gra w nadrabianie zaległości i pamiętam, że większość z tego miałem w 2003 roku - czyli 14 lat, a w web tech to eon za wolny :) .

Https://twitter.com/t_machine_org/status/917025348646199297

Tutaj wpisz opis obrazka

 3
Author: Alex S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-08 17:17:29

Z tego co wiem nie można generować Wykresów SVG ani kodów kreskowych SVG za pomocą CSS.

 -3
Author: Anon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-13 12:18:27