Avatar billede rangerbs Nybegynder
15. juni 2009 - 16:35 Der er 10 kommentarer og
1 løsning

Hjælp til print med CSS page-break

Hej eksperter..

Jeg har et lille problem:
Har en applikation der automatisk laver x antal tabeler. Dette fungere fint, men de skal også kunne printes så det ser pænt ud.

tabellerne er ikke ret høje (maks: 200px). Kan det laves sådan at den skyder så mange tabels ud på en side som muligt og hvis der IKKE er plads til en HEL tabel, så skal den først starte på den næste side? altså istedet for at 'cutte' den over i 2.

Sådan at jeg helt undgår at have en tabel delt på f.eks. bunden af side 1 og starten af side 2..

MVH
Avatar billede ebusiness Nybegynder
15. juni 2009 - 21:37 #1
Du kan bruge CSS koden page-break-inside:avoid; http://www.w3schools.com/css/pr_print_pagebi.asp

Bare sæt den på dine tabel elementer og de bør ikke blive delt. Jeg har ikke prøvet det, men det ser jo simpelt ud.
Avatar billede rangerbs Nybegynder
15. juni 2009 - 22:24 #2
Jeg har kigget på den der nu, men det vil ikke lykkedes..

Jeg har en kode der ser således ud. hvorfor virker det ikke? Synes det ser rigtig nok ud:


<head>
<--- Er kun lagt herind nu som et eksempel.. har det rigtigt i et stylesheet ved siden af --->

<style type="text/css">
TABLE, TR, TD {
    page-break-inside: avoid;
    text-align: left;
}
</style>
</head>


<body>
<table border="0" width="595px">
    <tr>
        <td>Erhverv</td>
        <td>Tømrer</td>
    </tr>
       
    <tr>
        <td>navn</td>
        <td>Knud olsen</td>
    </tr>       
    <tr>
        <td>telefon nr</td>
        <td>11112222</td>
    </tr>
    <tr>
        <td>
        </td>
    </tr>
</table>

<table border="0" width="595px">
    <tr>
        <td>Erhverv</td>
        <td>Tømrer</td>
    </tr>
       
    <tr>
        <td>navn</td>
        <td>Knud olsen</td>
    </tr>       
    <tr>
        <td>telefon nr</td>
        <td>11112222</td>
    </tr>
    <tr>
        <td>
        </td>
    </tr>
</table>

<table border="0" width="595px">
    <tr>
        <td>Erhverv</td>
        <td>Tømrer</td>
    </tr>
       
    <tr>
        <td>navn</td>
        <td>Knud olsen</td>
    </tr>       
    <tr>
        <td>telefon nr</td>
        <td>11112222</td>
    </tr>
    <tr>
        <td>
        </td>
    </tr>
</table>

Disse tabeler forsætter så i en lang køre.. men de deler sig desværre stadig ved side skift

</body>
Avatar billede zips Juniormester
15. juni 2009 - 23:01 #3
Jeg går udfra du har sat det i din media print, men kan se at det ikke vil virke med det du har skrevet, mest info kan findes på w3 side http://www.w3.org/TR/CSS2/page.html#propdef-page-break-inside

Men dette vil jeg mene giver det du ønsker

<style type="text/css"> 
@media print
{
    table { page-break-after:always;text-align: left; }
}
</style>
Avatar billede ebusiness Nybegynder
15. juni 2009 - 23:25 #4
Du bør lade være med at sætte egenskaben for tr og td elementerne. Jeg har kigget lidt på det og det ser ud til at egenskaben ikke er understøttet af særligt mange browsere, men der sker ikke noget ved at have sat egenskaben, så er den der når engang browser producenterne får røven med sig.
Avatar billede ebusiness Nybegynder
15. juni 2009 - 23:28 #5
zips, han har sat egenskaben for alle medie typer, dermed også for print.
Avatar billede rangerbs Nybegynder
15. juni 2009 - 23:31 #6
Zips: Jeg har lige prøvet din, men dette gør at der blevet lavet page break efter hver tabel.. hvilket virker fint

Men det skal bare være sådan at når den bliver delt op, så skal den springe ned på en ny side isteder for..

alle steder står der at det skulle være

page-break-inside: avoid;

men kan bare ikke få den til at virke.. tester både i Opera, IE, Firefox og Netscape :S
Avatar billede ebusiness Nybegynder
15. juni 2009 - 23:40 #7
Det burde virke i IE 8, men der er så en funktion som automatisk forsøger at undgå at opdele tabeller, så der er det faktisk ligemeget om du sætter den eller ej.
Avatar billede zips Juniormester
16. juni 2009 - 00:15 #8
Ifølge dette

"Also, page breaks cannot be forced to occur inside table cells, absolutely positioned boxes, and fixed positioned boxes. Page breaks set before, inside, or after such elements must be ignored"

Fundet her http://www.w3.org/TR/2002/WD-CSS21-20020802/page.html
kan det ikke lade sig gøre at splitte en tabel.
Avatar billede rangerbs Nybegynder
16. juni 2009 - 00:36 #9
oki.. Det virker faktisk fint i IE 8, så det understøttes nok ikke i de andre browsere.. lidt æregeligt..

Findes der ellers andre måder til at gøre det? tænker lidt på om der skulle være et trick til at opnå noget lignende?
Avatar billede zips Juniormester
16. juni 2009 - 02:06 #10
Lidt info om browser support af page-break-inside findes her
http://www.webdevout.net/browser-support-css#support-css2propsprint-pagebreakinside

Med hensyn til at styre en print side på den måde du ønsker, er der ikke så meget at gøre med css udfra det jeg ved om det.
Avatar billede roenving Novice
16. juni 2009 - 15:46 #11
Kigger man på supporten i http://blooberry.com/indexdot/css/properties/print/pbinside.htm fortæller det klart, at den ikke er moden !-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester