Aymkdn / html-to-pdfmake

This module permits to convert HTML to the PDFMake format
https://aymkdn.github.io/html-to-pdfmake/index.html
MIT License
560 stars 88 forks source link

Remove space between paragraph and OL/UL list #171

Closed ChristerE closed 1 year ago

ChristerE commented 1 year ago

Hi, I think I've tried everything to remove the space between a paragraph and the following OL/UL list but the space remains. Could you please help me? ` const page_margin_left = 60; const page_margin_right = 40; const page_margin_bottom = 80; const page_margin_top = 80;

const html = elm_to_pdf.html();
var win = window.open('', '_blank');

const pdf = htmlToPdfmake(html, {
    tableAutoSize: true,
    imagesByReference: true,
});

const data = {
    pageSize: 'A4',
    pageOrientation: 'portrait',
    pageMargins: [page_margin_left, page_margin_top, page_margin_right, page_margin_bottom],
    defaultStyle: {
        fontSize: 8,
        bold: false,
        'html-li': { backgroundColor: 'red' },
    },
    header: function (currentPage, pageCount) {
        if (currentPage > 1) {
            return [{
                columns: [
                {
                    image: 'data:image/png;base64,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',
                    width: 170,
                    margin: [0, 20, 0, 0]
                },
                ], margin: [page_margin_left, 0, page_margin_right, 0]
            }, {
                columns: [
                {text: pdf_header_text, alignment: 'right', width: '*', margin: [0, -25, 0, 0] },
                ], margin: [page_margin_left, 0, page_margin_right, 0]
            },{
                canvas: [{ type: 'line', x1: page_margin_left, y1: 10, x2: 595-page_margin_right, y2: 10, lineWidth: .5, lineColor: '#3a4180' }]
            }]
        }
    },
    content: [
        pdf.content,
    ],
    styles:{
        '???maybe som code here????'             
    },
    images: pdf.images,
    footer: function (currentPage, pageCount) {
        if (currentPage > 1) {
            return [
                {
                    canvas: [{ type: 'line', x1: page_margin_left, y1: 30, x2: 595 - page_margin_right, y2: 30, lineWidth: .5, lineColor: '#3a4180' }],
                },
                {
                    text: currentPage.toString() + ' (' + pageCount + ')\n' + pdf_footer_text.replace(/\[row-break]/g, '\n'),
                    alignment: 'center',
                    fontSize: 8,
                    margin: [0, 5, 0, 0],
                },                    
            ]
        }
    },
    pageBreakBefore: function(currentNode) {
        console.log('currentNode: ' + currentNode.style)
        return currentNode.style && currentNode.style.indexOf('pdf-pagebreak-before') > -1;
    }
}                     
var pdfDocGenerator = pdfMake.createPdf(data, {
    layoutTableWithThinGrayLines: {
        hLineWidth: function(i, node) {
            return (i === 0 || i === node.table.body.length) ? 0.5 : 0.5;
        },
        vLineWidth: function(i, node) {
            return (i === 0 || i === node.table.widths.length) ? 0.5 : 0.5;
        },
        hLineColor: function (rowIndex, node, colIndex) {
            return '#dedede';
        },
        vLineColor: function (rowIndex, node, colIndex) {
            return '#dedede';
        },
    }
}).open({}, win);`
Aymkdn commented 1 year ago

Please, provide the HTML code that you pass to the library.

ChristerE commented 1 year ago

Please, provide the HTML code that you pass to the library.

Thanks for your quick response :) here you go:

<div class="phs-offer-template-print-out-preview-container"><div id="phs-main-offer-template-preview-container-24" class="phs-offer-template-preview-container"><div id="phs-offer-template-preview-container-24" class="phs-offer-template-container"><hr data-pdfmake="{&quot;left&quot;:0, &quot;width&quot;:500, &quot;color&quot;:&quot;#3a4180&quot;, &quot;margin&quot;:[0,10,0,10], &quot;thickness&quot;:1}"><div class="phs-offer-template-preferences-header"><span class="content" style="font-size: 14pt; font-weight: bold; color: rgb(58, 65, 128); border-top: 1px solid rgb(58, 65, 128); border-bottom: 1px solid rgb(58, 65, 128);">ANBUD AVSEENDE BYTE AV FÖNSTER, FÖNSTERDÖRRAR [projekt-namn]</span></div><hr data-pdfmake="{&quot;left&quot;:0, &quot;width&quot;:500, &quot;color&quot;:&quot;#3a4180&quot;, &quot;margin&quot;:[0,10,0,10], &quot;thickness&quot;:1}"><div class="phs-offer-template-preferences-logotype"><span class="content" data-uploaded-file="logo-symb-old-effects__23.png"><img class="phs-offer-template-start-page-image" style="max-width: 500px; text-align: center; margin-top: 50px;" src="http://localhost:52051/system/uploads/shared/logotypes/logo-symb-old-effects__23.png"></span></div></div></div></div><div class="phs-offer-template-section-print-out-preview-container"><div class="phs-offer-template-print-out-section-container" style="display: block;"><div><div class="pdf-pagebreak-before">&nbsp;</div>
<p><span style="text-decoration: underline;"><strong>Innehållsförteckning anbud [projekt-namn]</strong></span></p>
<ol style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Inledning</li>
<li>Ekonomisk redovisning av anbud</li>
<li>Ekonomi och tidplan</li>
<li>Organisation</li>
<li>Beskrivning av processen med fönsterbyte</li>
<li>Kommentarer anbud</li>
</ol>
<p><br><strong>Anbudsbilagor</strong><br>Detta anbud gäller tillsammans med följande anbudsbilagor:</p>
<ol style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Fönsteruppställning&nbsp;</li>
</ol></div></div><div class="phs-offer-template-print-out-section-container" style="display: block;"><div><div class="pdf-pagebreak-before">&nbsp;</div>
<table style="border-collapse: collapse; width: 100%; height: 94px;" border="1" data-pdfmake="{'layout':'noBorders'}"><colgroup><col style="width: 77.4599%;"><col style="width: 22.6406%;"></colgroup>
<tbody>
<tr>
<td style="vertical-align: top;"><strong>[projekt-namn]</strong><br>[beställare-företagsadress]<br>[beställare-företagspostnummer] [beställare-företagsort]<br>Att: [beställare-ombud-namn]</td>
<td>&nbsp;</td>
</tr>
<tr style="height: 14px;">
<td style="height: 14px;">&nbsp;</td>
<td style="height: 14px;">Per e-post till:<br>[beställare-ombud-epost]</td>
</tr>
</tbody>
</table>
<p><strong>Vår referens och kontaktperson för anbudet:<br></strong>[kontraktspart-projekteringsansvarig-namn], [kontraktspart-projekteringsansvarig-mobil], [kontraktspart-projekteringsansvarig-epost]<strong><br></strong></p>
<p>&nbsp;</p></div></div><div class="phs-offer-template-print-out-section-container" style="display: block;"><table class="phs-offer-template-table-with-borders" style="width: 100%; border-collapse: collapse;" data-pdfmake="{'layout':'layoutTableWithThinGrayLines'}"><tbody><tr><th style="font-size: 10pt; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">ANBUD AVSEENDE FÖNSTERBYTE [projekt-namn]</th></tr></tbody></table><div><p>Med hänvisning till er förfrågan har Interoc Dörr &amp; Fönster AB nöjet att lämna följande anbud avseende byte av fönster och fönsterdörrar.</p>
<table style="border-collapse: collapse; width: 100%;" border="1" data-pdfmake="{'layout':'noBorders'}"><colgroup><col style="width: 50%;"><col style="width: 50%;"></colgroup>
<tbody>
<tr>
<td><span style="text-decoration: underline;">Anbudssumma totalentreprenad fönsterbyte:&nbsp;<br></span>Sidohängda inåtgående med Kip-Dreh.<span style="text-decoration: underline;"><br></span></td>
<td style="text-align: right; vertical-align: top;"><span style="text-decoration: underline;">[anbudssumma] kronor</span></td>
</tr>
<tr>
<td>Sidoanbud med vridfönster (i övrig likvärdigt) &nbsp; &nbsp;</td>
<td style="text-align: right;">1 998 000 kronor</td>
</tr>
</tbody>
</table>
<p>Lagstadgad mervärdesskatt tillkommer utöver anbudssumman i förekommande fall.</p>
<p><strong>Anbudets giltighetstid</strong><br>Anbudet är giltigt i 30 dgr från anbudsdatum.</p>
<p><strong>Handlingar till grund för anbud</strong><br>Anbudet avser arbeten enligt detta anbud dat. 2022-10-06, enligt följande handlingar:<br>- &nbsp; &nbsp;Detta anbud dat. 2022-10-06<br>- &nbsp; &nbsp;Plats besök</p>
<p><strong>Tillämpligt standardavtal</strong><br>ABT06</p>
<p><strong>Organisation</strong><br>För projektet/entreprenaden offereras preliminärt följande organisation:</p>
<table style="border-collapse: collapse; width: 100%; height: 68px;" border="1" data-pdfmake="{'layout':'noBorders'}"><colgroup><col style="width: 41.522%;"><col style="width: 58.478%;"></colgroup>
<tbody>
<tr style="height: 68px;">
<td style="height: 68px;"><strong>Ombud:&nbsp; &nbsp;&nbsp;</strong><br><strong>Platschef:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</strong><br><strong>Projekteringsansvarig:&nbsp; &nbsp; &nbsp; &nbsp;</strong><br><strong>Kvalitets- och miljöansvarig:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</strong><br><strong>BAS-P:&nbsp; &nbsp; </strong>&nbsp; &nbsp; &nbsp; &nbsp;<br><strong>BAS-U:&nbsp; &nbsp;</strong></td>
<td style="height: 68px;">[kontraktspart-ombud-namn]<br>[kontraktspart-platschef-namn]<br>[kontraktspart-projekteringsansvarig-namn]<br>[kontraktspart-kma-namn]<br>[kontraktspart-bas-p-namn]<br>[kontraktspart-bas-u-namn]</td>
</tr>
</tbody>
</table>
<p><strong>Tider</strong><br>Start på objektet ca. 5-8 veckor efter beställning.<br>Produktionstid fönsterbyte 6-7 veckor.<br><br></p>
<div class="pdf-pagebreak-before">&nbsp;</div>
<p><strong>Genomförande</strong></p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Beskrivning av processen med fönsterbyte</li>
</ul>
<p><strong>När beställaren bestämmer sig för att genomföra fönsterbytet med Interoc sker följande.</strong></p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li style="font-style: italic;"><em>Planering av lämplig tid för utförande.</em></li>
<li style="font-style: italic;"><em>Upprättande av beställningsskrivelse.</em></li>
<li style="font-style: italic;"><em>Mätning av fönster i samtliga lägenhetstyper för att i detalj fastställa mått och utrustning.</em></li>
<li style="font-style: italic;"><em>Upprättande av lägenhetslistor och beställningsunderlag för fönster.</em></li>
<li style="font-style: italic;"><em>Interoc beställer fönster hos leverantören. Det tar normalt minst 5 veckor från beställning till leverans och under högsäsong kan leveranstiderna vara upp till 20 veckor.</em></li>
<li style="font-style: italic;"><em>Utdelande av informationsbroschyr innehållande tidplan och all information den boende behöver inför fönsterbytet. Interoc erbjuder också ett informationsmöte för de boende.</em></li>
<li style="font-style: italic;"><em>Leverans av fönster och fönsterdörrar för lagring på plats. En leverans omfattar ca 150 fönster och montagearbetet pågår normalt då 5-6veckor.</em></li>
<li style="font-style: italic;"><em>Byte av fönster i lägenheter. Varje lägenhet är normalt berörd av fönsterbytet under 1–4 dagar. Dag 1 och 2-3 utförs normalt invändig listning och färdigställande invändigt, dag 3–4 utvändigt plåtarbete samt fönsterputs om detta beställts. Vi rekommenderar alltid att genomföra fönsterputsning i samband med bytet.</em></li>
<li style="font-style: italic;"><em>Bortforsling av gamla fönster.</em></li>
<li><em>När fönsterbytet är klart ansvarar fastighetsägaren för att en slutbesiktning av entreprenaden utf</em>örs. En referensbesiktning sker också i den första lägenheten som blir klar. Den utgör referens för det fortsatta arbetet och ska utföras av samma person (besiktningsman) som utför slutbesiktning.</li>
</ul>
<p><strong>Kommentarer anbud&nbsp;</strong></p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Vi rekommenderar fönsterbleck och smygplåtar i aluminium för att undvika galvaniska strömningar.&nbsp;</li>
</ul></div></div><div class="phs-offer-template-print-out-section-container" style="display: block;"><div class="phs-offer-template-section-header-default" data-type="section-header" style="background-color: rgb(255, 255, 255); color: rgb(58, 65, 128); font-size: 12pt;">Debiteringsnormer</div><div><p>Fast pris enligt offererad ANBUDSSUMMA.&nbsp;<br>För arbeten som utförs på löpande räkning (AB 04/ABT 06 kap 6 §§ 9 och 10) gäller följande:</p>
<table class="phs-offer-template-table-with-borders" style="border-collapse: collapse; width: 100%; border-width: 1px;" border="1" data-pdfmake="{'layout':'layoutTableWithThinGrayLines'}"><colgroup><col style="width: 50.0503%;"><col style="width: 49.9497%;"></colgroup>
<tbody>
<tr style="height: 14px;">
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);" colspan="2">Material och varor (AB 04/ABT 06 kap 6 § 9 p 1)</th>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;" colspan="2">Ersätts med verifierad självkostnad och nedanstående procentsatser och timpriser.</td>
</tr>
<tr style="height: 14px;">
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Timarvoden arbetsledning och utredningsarbete (AB 04/ABT 06 kap 6 § 9 p 2 och 7)</th>
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Kronor exkl. mervärdesskatt&nbsp;</th>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;">Projekteringsansvarig</td>
<td style="height: 14px; vertical-align: top; border-width: 1px;">850 kronor ??? Finns ej i KALKYL !!!</td>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;">Projektledare</td>
<td style="height: 14px; vertical-align: top; border-width: 1px;">??? kronor&nbsp;</td>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;">&nbsp;</td>
<td style="height: 14px; vertical-align: top; border-width: 1px;">&nbsp;</td>
</tr>
<tr style="height: 14px;">
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Timarvoden arbetare (AB 04/ABT 06 kap 6 § 9 p 3)</th>
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Kr exkl. mervärdesskatt</th>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;">Byggarbetare&nbsp; &nbsp;&nbsp;<br>Målare&nbsp; &nbsp;&nbsp;<br>Plåt&nbsp; &nbsp;&nbsp;</td>
<td style="height: 14px; vertical-align: top; border-width: 1px;">480 kronor<br>450 kronor<br>480 kronor</td>
</tr>
<tr style="height: 14px;">
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Entreprenörarvode (AB 04/ABT 06 kap 6 § 9 p 8)</th>
<th style="height: 14px; vertical-align: top; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Procentsats (%)</th>
</tr>
<tr style="height: 14px;">
<td style="height: 14px; vertical-align: top; border-width: 1px;">Ovan angivna timarvoden inkluderar entreprenörarvode. &nbsp; &nbsp;</td>
<td style="height: 14px; vertical-align: top; border-width: 1px;">&nbsp;</td>
</tr>
<tr>
<td style="vertical-align: top; border-width: 1px;">Material, varor och hjälpmedel</td>
<td style="vertical-align: top; border-width: 1px;">12 %</td>
</tr>
<tr>
<td style="vertical-align: top; border-width: 1px;">Underentreprenörer och konsulter (utredning och projektering)</td>
<td style="vertical-align: top; border-width: 1px;">12 %</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p></div></div><div class="phs-offer-template-print-out-section-container" style="display: block;"><div><div class="pdf-pagebreak-before">&nbsp;</div>
<table class="phs-offer-template-table-with-borders" style="border-collapse: collapse; width: 100%; border-width: 1px;" border="1" data-pdfmake="{'layout':'layoutTableWithThinGrayLines'}">
<tbody>
<tr>
<th style="text-align: left; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Beställaren tillhandahåller</th>
</tr>
<tr>
<td style="border-width: 1px;">
<p>Beställaren förutsätts tillhandahålla följande:</p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Tillfällig el- och VA-försörjning enligt AMA AF 12 AFG.1412 och AFG.1422 inom 25 meter från arbetsplatsen.</li>
<li>Upplagsplats för material och vid behov deponi/förrådscontainer i nära anslutning till Interocs arbetsställe.</li>
</ul>
<p>Eventuella avvikelser föranleder justering av anbudssumman.</p>
</td>
</tr>
<tr>
<th style="text-align: left; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Förutsättningar och förtydliganden</th>
</tr>
<tr>
<td style="border-width: 1px;">
<p>Anbudet är baserat på följande förutsättningar och förtydliganden:</p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Leverans av <strong><u>FÖNSTER</u></strong> och <strong><u>FÖNSTERDÖRRAR</u></strong> ingår <strong><u>ANTAL ENHETER</u></strong>.</li>
<li>Rivning och montering av fönster och fönsterdörrar ingår.</li>
<li>Persienner ingår ej.</li>
<li>Standard handtag inkl. barnspärr till fönster ingår på öppningsbara enheter.</li>
<li>Invändig listning ingår.</li>
<li>Utvändiga fönsterbleck ingår.</li>
<li>Utvändiga plåtomfattningar i ingår.</li>
<li>Lossning material leveranser ingår.</li>
<li>Skyddstäckning av golvytor med petexmattor ingår.</li>
<li>Grovstädning efter avslutat arbete ingår.</li>
<li>Deponi och tömning av container ingår.</li>
<li>Verktygscontainrar till vårt material ingår.</li>
<li>Väderskydd av material ingår.</li>
<li>Förbesiktning innan besiktning ingår.</li>
<li>Arbetsområdet förutsätts vara disponerat på sådant sätt att framkomligheten ej är begränsad.</li>
</ul>
<p>Eventuella avvikelser föranleder justering av anbudssumman.</p>
</td>
</tr>
<tr>
<th style="text-align: left; border-width: 1px; background-color: rgb(58, 65, 128); color: rgb(255, 255, 255);">Reservationer</th>
</tr>
<tr>
<td style="border-width: 1px;">
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Sanering av eventuell förekomst av PCB, asbest eller andra miljö- och hälsofarliga ämnen ingår ej.Åtgärder av bristande underliggande konstruktion ingår ej.</li>
<li>Kostnad för TA-plan och avspärrningar ingår ej.</li>
</ul>
<p>Ej accepterade reservationer föranleder justering av anbudssumman.</p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p></div></div><div class="phs-offer-template-print-out-section-container" style="display: block;"><div><p><strong>Med förhoppning om att ni ska finna vårt anbud intressant.</strong></p>
<p><strong>Med vänlig hälsning</strong></p>
<p><strong>[kontraktspart-projekteringsansvarig-namn]</strong><br><strong>Säljare </strong></p></div></div></div>
Aymkdn commented 1 year ago

Could you please isolate the problematic HTML code? You said something about UL and LI...

ChristerE commented 1 year ago

Ok, this in my code:

<p><strong>Kommentarer anbud&nbsp;</strong></p>
<ul style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Vi rekommenderar fönsterbleck och smygplåtar i aluminium för att undvika galvaniska strömningar.&nbsp;</li>
ChristerE commented 1 year ago

Can I somehow attach an image for you to see?

Aymkdn commented 1 year ago

Can I somehow attach an image for you to see?

Yes, you can. You can copy/paste an image here.

ChristerE commented 1 year ago

image-1

ChristerE commented 1 year ago

It's the space marked as red between the paragraph and the OL list I want to remove

Aymkdn commented 1 year ago

You have to use the removeExtraBlanks option, as described in the documentation.

Before: image

After: image

ChristerE commented 1 year ago

Hi again, thank you for pointing me in the right direction. I don't know if I put it in the right place, see below. In my way, the whole pdf goes blank :(

    const pdf = htmlToPdfmake(html, { removeExtraBlanks: true }, {
        tableAutoSize: true,
        imagesByReference: true,        
    });
Aymkdn commented 1 year ago

It should be:

 const pdf = htmlToPdfmake(html, {
        removeExtraBlanks: true,
        tableAutoSize: true,
        imagesByReference: true      
    });
ChristerE commented 1 year ago

I'm sorry to chase you but I can't see any difference :( image-2 I did as you wrote: const pdf = htmlToPdfmake(html, { removeExtraBlanks: true, tableAutoSize: true, imagesByReference: true, });

Aymkdn commented 1 year ago

Mmmhhh… I need to investigate more on this specific case.

Aymkdn commented 1 year ago

OK, this is due to the <p></p>. If you replace it with a <div></div> it will remove the blank space.

Before:

<p><span style="text-decoration: underline;"><strong>Innehållsförteckning anbud [projekt-namn]</strong></span></p>
<ol style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Inledning</li>
<li>Ekonomisk redovisning av anbud</li>
<li>Ekonomi och tidplan</li>
<li>Organisation</li>
<li>Beskrivning av processen med fönsterbyte</li>
<li>Kommentarer anbud</li>
</ol>

image

After:

<div><span style="text-decoration: underline;"><strong>Innehållsförteckning anbud [projekt-namn]</strong></span></div>
<ol style="color: rgb(0, 128, 0); margin-left: 10px;">
<li>Inledning</li>
<li>Ekonomisk redovisning av anbud</li>
<li>Ekonomi och tidplan</li>
<li>Organisation</li>
<li>Beskrivning av processen med fönsterbyte</li>
<li>Kommentarer anbud</li>
</ol>

image

ChristerE commented 1 year ago

I'm using tinyMCE to create the HTML code so I added this to the configuration: forced_root_block : 'div', I then removed removeExtraBlanks: true, and the result now is what I want, see below :) THANK YOU for your great support and PATIENCE :) image-3

Aymkdn commented 1 year ago

Great!