- Finalmente risolto il calcolo e l'impaginazione del PDF, per WEb e per Stampa (300 dpi) !

- corretto altre cose sulla lista cataloghi.
This commit is contained in:
Surya Paolo
2025-05-23 16:31:04 +02:00
parent e0583044d7
commit 3d2d1cbdd7
22 changed files with 2189 additions and 2848 deletions

View File

@@ -125,7 +125,7 @@ body {
margin-bottom: calc(5 * var(--scalecatalog) * 1px);
}
.book-pagina-title, .book-pagina-title-footer {
.book-pagina-title {
font-family: 'DINPro', sans-serif;
margin-top: calc(50 * var(--scalecatalog) * 1px);
margin-bottom: calc(0 * var(--scalecatalog) * 1px);
@@ -135,8 +135,10 @@ body {
font-weight: bold;
}
.book-pagina-title-footer{
.book-pagina-title-footer {
font-family: 'DINPro', sans-serif;
font-size: calc(20 * var(--scalecatalog) * 1px) !important;
font-weight: bold;
text-transform: none;
}

File diff suppressed because it is too large Load Diff

View File

@@ -139,9 +139,7 @@
class="text-center q-py-sm prod_trov"
>
<div
v-if="
cat === '' && arrProducts.length === 0 && showListaFiltrata
"
v-if="cat === '' && arrProducts.length === 0 && showListaFiltrata"
class="row justify-center text-h6"
>
Seleziona {{ filtroStrApplicato }}
@@ -178,10 +176,7 @@
</q-inner-loading>
<q-btn
v-if="
!showListaFiltrata &&
(tools.isEditor() || tools.isCommerciale())
"
v-if="!showListaFiltrata && (tools.isEditor() || tools.isCommerciale())"
rounded
icon="fas fa-redo"
label="Rigenera Lista"
@@ -244,6 +239,7 @@
:lista_prodotti="myCatalog?.lista_prodotti"
@update:lista_prodotti="updateProducts"
:optcatalogo="optcatalogo"
:idcatalog="myCatalog._id"
table="products"
@rigenera="generaListaLibri()"
/>
@@ -319,11 +315,7 @@
</q-tabs>
<CTitleBanner
v-show="
tabcatalogo === 'visu' &&
!tools.isUtente() &&
arrProducts?.length > 0
"
v-show="tabcatalogo === 'visu' && !tools.isUtente() && arrProducts?.length > 0"
class="q-pa-xs"
title="Genera PDF"
bgcolor="bg-blue"
@@ -339,21 +331,39 @@
class="row justify-center"
>
<q-btn
v-if="
optcatalogo.pdf && !optcatalogo.generazionePDFInCorso
"
:label="`1) PREPARA PDF`"
@click="preparePDF"
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`PREPARA PDF WEB`"
@click="preparePDFWeb"
></q-btn>
<q-btn
v-if="optcatalogo.pdf && !optcatalogo.generazionePDFInCorso"
:label="`PREPARA PDF STAMPA`"
@click="preparePDFStampa"
></q-btn>
<q-select
v-if="optcatalogo.generazionePDFInCorso"
v-model="optcatalogo.selectedVersionStampabile"
:options="[
{ label: 'Versione Web', value: shared_consts.PREPARA_PDF.WEB },
{ label: 'Versione Stampabile', value: shared_consts.PREPARA_PDF.STAMPA },
]"
label="Seleziona Versione"
:disable="true"
emit-value
map-options
style="width: 300px"
@update:model-value="modifElem"
>
</q-select>
<q-btn
v-if="optcatalogo.generazionePDFInCorso"
:label="`Termina Generazione`"
@click="terminaPDF"
></q-btn>
<q-btn
v-if="
optcatalogo.pdf && optcatalogo.generazionePDFInCorso
"
v-if="optcatalogo.pdf && optcatalogo.generazionePDFInCorso"
:label="`2) Genera PDF ` + getPdfFilename()"
@click="generatePDF()"
color="positive"
@@ -365,15 +375,158 @@
:push="optcatalogo.indebug"
:color="optcatalogo.indebug ? `positive` : 'primary'"
></q-btn>
<q-input
v-if="optcatalogo.pdf && optcatalogo.indebug"
@update:model-value="modifElem"
v-model="ratioconvert"
label="Ratio Convert"
type="number"
step="0.01"
outlined
dense
style="width: 100px; margin-right: 10px"
></q-input>
<q-btn
v-if="
optcatalogo.pdf &&
!optcatalogo.generazionePDFInCorso &&
optcatalogo.indebug
"
:label="`CONVERTI VALORI`"
@click="convertiValori"
></q-btn>
</div>
<CTitleBanner
v-show="
tabcatalogo === 'visu' && !tools.isUtente() && arrProducts?.length > 0
"
class="q-pa-xs"
title="Configurazione"
bgcolor="bg-blue"
clcolor="text-white"
mystyle=""
myclass="myshad"
:canopen="true"
:visible="false"
>
<div
v-if="tools.isAdmin()"
class="row justify-center"
>
<div class="justify-center">
<q-select
rounded
style="width: 200px"
outlined
v-model="optcatalogo.areadistampa.format"
:options="tools.SelectListFormatPDF"
@update:model-value="modifElem"
dense
label="Formato:"
emit-value
map-options
>
</q-select>
<div v-if="optcatalogo.areadistampa.format.length > 1">
Ratio:
{{
optcatalogo.areadistampa.format[0] /
optcatalogo.areadistampa.format[1]
}}
</div>
<q-select
rounded
style="width: 200px"
outlined
v-model="optcatalogo.areadistampa.scale"
:options="tools.SelectListScalePDF"
@update:model-value="modifElem"
dense
label="Scale:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 200px"
outlined
v-model="optcatalogo.areadistampa.scale_printable"
:options="tools.SelectListScalePDF"
@update:model-value="modifElem"
dense
label="Scale per Stampa:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 200px"
outlined
v-model="optcatalogo.areadistampa.scalecanvas"
:options="tools.SelectListQualityPDF"
@update:model-value="modifElem"
dense
label="Qualità:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 150px"
outlined
v-model="optcatalogo.areadistampa.orientation"
:options="tools.SelectListOrientamentoPDF"
@update:model-value="modifElem"
dense
label="Orientamento:"
emit-value
map-options
>
</q-select>
<q-select
rounded
style="width: 150px"
outlined
v-model="optcatalogo.areadistampa.unit"
:options="tools.SelectListUnitPDF"
@update:model-value="modifElem"
dense
label="Unità:"
emit-value
map-options
>
</q-select>
<q-toggle
v-model="optcatalogo.areadistampa.compress"
color="positive"
icon="fas fa-file-pdf"
label="Comprimi"
@update:model-value="modifElem"
>
</q-toggle>
</div>
<div>
<CBorders
label="Margini di Stampa (mm):"
v-model="optcatalogo.areadistampa.margini"
@update:model-value="modifElem"
addstr=""
></CBorders>
</div>
</div>
</CTitleBanner>
<div v-if="strout">
{{ strout }}
</div>
<div v-if="myCatalog">
<div
v-if="myCatalog.pdf_generato"
class="bg-green-1 q-ma-sm q-pa-sm"
>
<div
class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-red text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF generati Temporanei</strong>
</div>
@@ -389,11 +542,11 @@
<q-td :props="props">
<a
v-if="props.row.pdf"
:href="tools.getHost() + props.row.pdf"
:href="tools.getURLByHostAndFilePath(props.row.pdf)"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + props.row.pdf }}
{{ tools.getURLByHostAndFilePath(props.row.pdf) }}
</a>
<span v-else>-</span>
</q-td>
@@ -420,15 +573,11 @@
</q-table>
<div class="bg-red-1 q-pa-md q-mt-md">
<div
class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm"
>
<div class="bg-blue-1 text-green text-bold text-h6 q-ma-sm q-pa-sm">
<strong>PDF Pubblicati OnLine</strong>
</div>
<table
class="q-table q-table--flat q-table--dense q-ma-none q-pa-none"
>
<table class="q-table q-table--flat q-table--dense q-ma-none q-pa-none">
<tbody>
<tr>
<td>
@@ -437,20 +586,16 @@
<td>
<a
v-if="myCatalog.pdf_online"
:href="
tools.getHost() + myCatalog.pdf_online
"
:href="tools.getURLByHostAndFilePath(myCatalog.pdf_online)"
target="_blank"
class="text-bold"
>
{{ tools.getHost() + myCatalog.pdf_online }}
{{ tools.getURLByHostAndFilePath(myCatalog.pdf_online) }}
</a>
<span v-else>-</span>
</td>
<td>
{{
tools.getstrDateTime(myCatalog.data_online)
}}
{{ tools.getstrDateTime(myCatalog.data_online) }}
</td>
</tr>
<tr>
@@ -461,25 +606,17 @@
<a
v-if="myCatalog.pdf_online_stampa"
:href="
tools.getHost() +
myCatalog.pdf_online_stampa
tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa)
"
target="_blank"
class="text-bold"
>
{{
tools.getHost() +
myCatalog.pdf_online_stampa
}}
{{ tools.getURLByHostAndFilePath(myCatalog.pdf_online_stampa) }}
</a>
<span v-else>-</span>
</td>
<td>
{{
tools.getstrDateTime(
myCatalog.data_online_stampa
)
}}
{{ tools.getstrDateTime(myCatalog.data_online_stampa) }}
</td>
</tr>
</tbody>
@@ -597,23 +734,15 @@
item.type === costanti.FieldType.select ||
item.type === costanti.FieldType.select_by_server
"
:label="
item.value && item.value._id > 0
? undefined
: labelcombo(item)
"
:label="item.value && item.value._id > 0 ? undefined : labelcombo(item)"
v-model:value="item.value"
:addall="item.addall"
:addnone="item.addnone"
:addlast="true"
:tablesel="
item.type === costanti.FieldType.select_by_server
? item.tablesel
: ''
"
:pickup="
item.type === costanti.FieldType.select_by_server
item.type === costanti.FieldType.select_by_server ? item.tablesel : ''
"
:pickup="item.type === costanti.FieldType.select_by_server"
:label-color="$q.dark.isActive ? 'white' : 'black'"
myclass="comboselector"
color="primary"
@@ -626,8 +755,7 @@
:filter_extra="item.filter_extra"
style="font-size: 0.8rem !important"
:useinput="
item.useinput &&
item.type !== costanti.FieldType.select_by_server
item.useinput && item.type !== costanti.FieldType.select_by_server
"
>
</CMySelect>
@@ -665,11 +793,7 @@
<div class="text-center q-py-sm prod_trov">
<div
v-if="
cat === '' &&
arrProducts.length === 0 &&
showListaFiltrata
"
v-if="cat === '' && arrProducts.length === 0 && showListaFiltrata"
class="row justify-center text-h6"
>
Seleziona {{ filtroStrApplicato }}
@@ -716,26 +840,17 @@
optcatalogo.first_page.text_html &&
optcatalogo.first_page.text_html.contenuto
"
:style="
generateStyleByPageDim(
optcatalogo,
optcatalogo.first_page
)
"
:style="generateStyleByPageDim(optcatalogo, optcatalogo.first_page)"
>
<div
v-html="optcatalogo.first_page.text_html.contenuto"
></div>
<div v-html="optcatalogo.first_page.text_html.contenuto"></div>
</div>
<div :style="generateStyleCatalogo(optcatalogo)">
<div
v-if="!nascondi"
:style="generateStyleCatalogo(optcatalogo)"
>
<div class="flex-container-book">
<q-infinite-scroll
v-if="
!optcatalogo.pdf &&
arrLoaded &&
arrLoaded.length > 0 &&
!ismounting
"
v-if="!optcatalogo.pdf && arrLoaded && arrLoaded.length > 0 && !ismounting"
ref="myinfscroll"
:initial-index="0"
@load="onLoadScroll"
@@ -794,17 +909,13 @@
>
<!-- Itera sulle schede -->
<div
v-for="(
recscheda, schedaIndex
) in optcatalogo.arrSchede"
v-for="(recscheda, schedaIndex) in optcatalogo.arrSchede"
:key="schedaIndex"
>
<div v-if="recscheda && recscheda.scheda">
<!-- Itera sulle pagine -->
<div
v-for="(page, pageIndex) in groupedPages(
recscheda
)"
v-for="(page, pageIndex) in groupedPages(recscheda)"
:key="pageIndex"
>
<div
@@ -815,24 +926,15 @@
'card-page': false,
'pdf-section': true,
}"
:style="
generateStylePageScheda(
optcatalogo,
recscheda.scheda
)
"
:style="generateStylePageScheda(optcatalogo, recscheda.scheda)"
>
<div
v-if="
recscheda.scheda.dimensioni.pagina
?.testo_title?.contenuto
"
v-if="recscheda.scheda.dimensioni.pagina?.testo_title?.contenuto"
:style="{
'--scalecatalog':
tools.getScale(optcatalogo),
'--scalecatalog': tools.getScale(optcatalogo),
'line-height':
recscheda.scheda.dimensioni.pagina
?.testo_title?.font.line_height,
recscheda.scheda.dimensioni.pagina?.testo_title?.font
.line_height,
display: 'flex',
flexDirection: 'column',
position: 'relative', // Posizionamento assoluto
@@ -854,16 +956,12 @@
></div>
</div>
<div
v-if="
recscheda.scheda.dimensioni.pagina?.testo_up
?.contenuto
"
v-if="recscheda.scheda.dimensioni.pagina?.testo_up?.contenuto"
:style="{
'--scalecatalog':
tools.getScale(optcatalogo),
'--scalecatalog': tools.getScale(optcatalogo),
'line-height':
recscheda.scheda.dimensioni.pagina
?.testo_up?.font.line_height,
recscheda.scheda.dimensioni.pagina?.testo_up?.font
.line_height,
display: 'flex',
flexDirection: 'column',
}"
@@ -878,15 +976,14 @@
<div
v-if="recscheda.scheda?.dimensioni?.pagina?.testo_title"
:style="{
'--scalecatalog':
tools.getScale(optcatalogo),
'--scalecatalog': tools.getScale(optcatalogo),
'line-height':
recscheda.scheda.dimensioni.pagina
?.testo_title?.font.line_height,
recscheda.scheda.dimensioni.pagina?.testo_title?.font
.line_height,
display: 'flex',
flexDirection: 'column',
position: 'relative', // Posizionamento assoluto
bottom: '8.5%', // Posiziona in basso
position: 'absolute', // Posizione assoluta rispetto al contenitore padre
bottom: '2.2%', // Posiziona in basso
left: '50%', // Centra orizzontalmente
transform: 'translateX(-50%)', // Correzione per centrare perfettamente
width: '100%', // Assicura che il contenitore occupi l'intera larghezza
@@ -902,6 +999,7 @@
<div v-if="optcatalogo.indebug">
IMG:
{{ getImgIntroCatalogo(recscheda.scheda) }}
num: {{ page.length }}
</div>
<!-- Itera sulle righe di ogni pagina -->
@@ -922,9 +1020,7 @@
v-for="(prod, colIndex) in row"
:key="`${pageIndex}-${rowIndex}-${colIndex}`"
class="flex-item-book"
:style="
getStyleSchedaProdotto(recscheda)
"
:style="getStyleSchedaProdotto(recscheda)"
>
<CContainerCatalogoCard
v-if="prod && prod.active"
@@ -945,9 +1041,7 @@
@selauthor="selauthor"
/>
<CProductCard
v-else-if="
prod && (prod.active || show_hide)
"
v-else-if="prod && (prod.active || show_hide)"
:id="prod._id"
:complete="false"
:cosa="cosa"
@@ -967,9 +1061,7 @@
>
<q-separator
inset
:size="
tools.adjustSize(optcatalogo, '1px')
"
:size="tools.adjustSize(optcatalogo, '1px')"
></q-separator>
</div>
</div>
@@ -990,13 +1082,9 @@
optcatalogo.last_page.text_html &&
optcatalogo.last_page.text_html.contenuto
"
:style="
generateStyleByPageDim(optcatalogo, optcatalogo.last_page)
"
:style="generateStyleByPageDim(optcatalogo, optcatalogo.last_page)"
>
<div
v-html="optcatalogo.last_page.text_html.contenuto"
></div>
<div v-html="optcatalogo.last_page.text_html.contenuto"></div>
</div>
</div>
</div>

View File

@@ -166,11 +166,6 @@ export default defineComponent({
: '';
}
}
if (!imagefile) {
let myimg = costanti.CATALOGHI.PAG_SFONDO_DEFAULT;
// Se non c'è un immagine di sfondo, allora prende quella di default
imagefile = `url("${tools.getDirUpload() + shared_consts.getDirectoryByTable(shared_consts.TABLES_CATALOG) + '/' + myimg})"`;
}
if (!imagefile && mypage) {
imagefile = mypage.imgsfondo!.imagefile!;
@@ -178,6 +173,12 @@ export default defineComponent({
fit = mypage.imgsfondo!.fit!;
}
if (!imagefile) {
let myimg = costanti.CATALOGHI.PAG_SFONDO_DEFAULT;
// Se non c'è un immagine di sfondo, allora prende quella di default
imagefile = `url("${tools.getDirUpload() + shared_consts.getDirectoryByTable(shared_consts.TABLES_CATALOG) + '/' + myimg})"`;
}
return { imagefile, fit };
}

View File

@@ -49,6 +49,7 @@
@update:lista_prodotti="updateRaccolta"
table="catalogs"
:optcatalogo="optcatalogo"
:idcatalog="idPage"
/>
</q-tab-panel>
@@ -83,12 +84,12 @@
<div v-if="getRaccoltaCataloghiByMyPage?.data_generato !== getRaccoltaCataloghiByMyPage?.data_online">
PDF Generato:
<a
:href="tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_generato"
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato)"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato"
class="text-bold"
>
{{ tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_generato }}
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato) }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato) }})
@@ -105,12 +106,12 @@
<div v-if="getRaccoltaCataloghiByMyPage?.data_generato_stampa !== getRaccoltaCataloghiByMyPage?.data_online_stampa">
PDF Generato Stampa:
<a
:href="tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_generato_stampa"
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato_stampa)"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_generato_stampa"
class="text-bold"
>
{{ tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_generato_stampa }}
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_generato_stampa) }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_generato_stampa) }})
@@ -130,12 +131,12 @@
<div v-if="getRaccoltaCataloghiByMyPage?.data_online">
PDF OnLine:
<a
:href="tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_online"
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online)"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online"
class="text-bold"
>
{{ tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_online }}
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online) }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online) }})
@@ -144,12 +145,12 @@
<div v-if="getRaccoltaCataloghiByMyPage?.data_online_stampa">>
PDF OnLine Stampa:
<a
:href="tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_online_stampa"
:href="tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online_stampa)"
target="_blank"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online_stampa"
class="text-bold"
v-if="getRaccoltaCataloghiByMyPage?.pdf_online_stampa"
>
{{ tools.getHost() + getRaccoltaCataloghiByMyPage?.pdf_online_stampa }}
{{ tools.getURLByHostAndFilePath(getRaccoltaCataloghiByMyPage?.pdf_online_stampa) }}
</a>
<span v-else>-</span>
<br />(del {{ tools.getstrDateTime(getRaccoltaCataloghiByMyPage?.data_online_stampa) }})