2012-12-26 10 views
7

Mam fakturę w html, która wyświetla się dobrze na ekranie. Chcę wydrukować go na wstępnie sformatowanym papierze. papier ma trzy sekcjeDrukowanie faktury na wstępnie sformatowanym papierze za pomocą CSS

nagłówka (ustalona wysokość od góry strony)

ciała (tabela składa się z 1 - n rzędów)

stopka (ustalona wysokość od dolnej strony)

próbowałem za pomocą CSS oraz tworzenia div korzystająC#InvFooter i CSS

<link rel="stylesheet" href="print.css" type="text/css" media="print" /> 
@page { size:8.5in 11in; margin: 2cm } 


#InvFooter {position:absolute;left:50px;bottom:0px;} 

Mam dwa problemy, których nie mogę rozgryźć.

  1. Sposób zakotwiczenia stopki na dole drukowanej strony.
  2. Jak ograniczyć treść do stałej sekcji strony i przepełnić ją na inną stronę, jeśli tabela zawiera zbyt wiele wierszy.
+0

Co masz na myśli, mówiąc o "wstępnie sformatowanym papierze"? Czy papier fizyczny jest już częściowo wydrukowany? – Jonatan

+1

TAK dokładnie. Elementy kolorystyczne tła faktury są wstępnie zadrukowane wraz z perforacją. –

+1

Aha, rozumiem. Myślę, że ciężko ci będzie to osiągnąć dzięki CSS. Radziłbym ci użyć czegoś podobnego do PDF. CSS i HTML są naprawdę lepiej dostosowane do tego, w jaki sposób przeglądarka powinna wyświetlać Twój dokument. Nie do druku - przepraszam. – Jonatan

Odpowiedz

2

Prosta odpowiedź: nie, html/css nigdy nie było przeznaczone do drukowania. Nawet jeśli możesz "zhakować" bezwzględne rozmiary, aby pasowały do ​​twojej obecnej drukarki, nie ma gwarancji, że będą pasować do następnego (lub klienta).

Z tego powodu wymyślono format PDF, który zapewnia oczekiwany wydrukowany format (a także wysoką przenośność).

Korzystając z pliku PDF, masz pewność, że otrzymasz stały (papierowy) rozmiar.

Będziesz mógł znaleźć darmowe rozwiązania PDF (Open Source), jak również rozwiązań komercyjnych (takich jak na przykład Dynamic PDF - i wiele innych), które pozwalają na generowanie PDF z .Net w locie/dynamicznie z aplikacji serwerowych bez zależności produktów Adobe.

+0

Dzięki, w tym przypadku wcześniej wydrukowane formularze są tylko wtedy, gdy wysyłamy faktury, jeśli użytkownik sam wystawi rachunki i wydrukuje własne faktury ce formularz nie jest wstępnie wydrukowany, więc wszystko działa. Czy rozwiązania PDF działają programowo (tzn. Czy mogę im powiedzieć, które DIV –

+0

Tak, jest programowalny i bardzo łatwo jest ustawić takie rzeczy jak faktury itp. Użyłem tego i bardziej skomplikowanych rzeczy, a pliki wynikowe są zazwyczaj bardzo małe chyba że osadzam obrazy itp. – K3N

+0

Tak, moim serwerem env jest Apache nad FreeBSD z perl, python, PHP, itp. Potrzebuję rozwiązania, które nie jest .net –

0

To najlepsza kompilacja technik drukowania CSS, z którymi się zetknąłem. Posiada głębokie powiązania ze standardami W3, doskonałe przykłady, zalecane przez firmę zewnętrzną oprogramowanie HTML -> PDF i poręczny JPEG, który wizualizuje 16 różnych selektorów marginesów strony. Zacząłem od tego, a teraz mogę wydrukować ponad 100 różnych streszczeń projektów o różnej długości, by przynieść recenzje dla dyrektorów.

  1. Artykuł: https://www.smashingmagazine.com/2015/01/designing-for-print-with-css/

  2. Poręczna-dandys margines strony JPEG: https://media-mediatemple.netdna-ssl.com/wp-content/uploads/2014/12/1-image-margin-boxes-large-opt.jpg

  3. Książka HTML demo: https://github.com/rachelandrew/css-for-print/blob/master/book.html

  4. CSS druku demo: https://github.com/rachelandrew/css-for-print/blob/master/pdf-styles.css

Mam nadzieję, że to pomoże!

EDIT Mogą to być to, czego szukasz:

.invoice { 
    page-break-before: always; 
} 

.invoice h1.title { 
    page-break-after: avoid; 
} 

.invoice .line-item { 
    page-break-inside: avoid; 
    page-break-after: auto; 
} 

EDIT Jak sformatowana papier pomieścić faktur wielostronicowych? Musisz wydrukować każdą fakturę osobno ... ugh

Powiązane problemy