81 messaggi dal 03 giugno 2001
Ciao a a tutti,
come da oggetto.. il mio problema si verifica quando vado a creare un pdf.
Visto che non riusci a risolvere una proprietà di della libreria che uso fpdf
e visto che il testo se troppo lungo mi esce fuori a destra del pdf (perdendo mi le parole...)
pensavo di fare utilizzare un controllo prima di mandare in output al pdf



ho trovato questo script...
che
mi va in effetti a capo... il solo problema e che mi va a capo non considerando gli a capo che già sono presenti nel testo,

dim testo,maxLen,att
maxLen=140 
testo=testo_abstract
  parole=split(testo," ")
  testo=""
  att=0
  for each parola in parole
  testo=testo & " " & parola
  att=att+len(parola)+1
  
    if Instr(parole,vbCrLf)=0 then
      testo=testo &  vbCrLf 
      att=0
    end if
  
  next



quindi io pensavo che con
 
  if att>=maxLen  then
  
    if Instr(parole,vbCrLf)=0 then
      testo=testo &  vbCrLf 
      att=0
    end if
  
  end if  


risolvevo il mio problema.. ma nulla.. dove sbaglio...?
grazie e buona week end
Giuseppe

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
394 messaggi dal 11 agosto 2004
Definiamola beta.. :)
Per funzionare funziona (o almeno da me funziona) solo che tronca le parole a metà..
c'è ancora da lavorarci dietro ma come preliminare può andare no?
<%dim testo,maxLen,att
testo_abstract="There is nothing better then getting free performance boosts for our Radeon cards from the monthly Catalyst software updates. Every month we expect to see some new goods from AMD&#8217;s finest software department. Sometimes our expectations are too high and we are left somewhat disappointed, and sometimes they manage to rock us all. Last month AMD has released Catalyst 7.4 and claimed that they had boosted its OpenGL performance on Windows Vista. With AMD&#8217;s Catalyst 7.5 around the corner, and the hype around R600, we relaxed, sat back and tested the Catalyst 7.4 suite under Microsoft&#8217;s new Vista operating system to investigate AMD&#8217;s claims. "

maxLen=140
lentotale=Len(testo_abstract)
righe=Int(lentotale/maxlen)
resto=lentotale-(maxLen*righe)

For x=0 To righe
If testo="" Then
testo=Mid(testo_abstract,x+1,maxLen) & "<br>"
Else
testo=testo & Mid(testo_abstract,(maxLen*x)+1,maxLen) & "<br>"
End If
Next

If resto > 0 Then
For y=0 To resto
testo=testo & Mid(testo_abstract,(maxLen*(x+y))+1,maxLen) & "<br>"
Next
End If

response.write testo
%>
Modificato da Maxiz il 26 maggio 2007 23.49 -
81 messaggi dal 03 giugno 2001
grazi Maxiz
della tua risposta...
ma ho provato solo a sostituire il <br> con vbCrLf visto che devo creare un pdf

così...

dim testo,maxLen,att

maxLen=140
lentotale=Len(testo_abstract)
righe=Int(lentotale/maxlen)
resto=lentotale-(maxLen*righe)

For x=0 To righe
If testo="" Then
testo=Mid(testo_abstract,x+1,maxLen) &  vbCrLf 
Else
testo=testo & Mid(testo_abstract,(maxLen*x)+1,maxLen) &  vbCrLf 
End If
Next

If resto > 0 Then
For y=0 To resto
testo=testo & Mid(testo_abstract,(maxLen*(x+y))+1,maxLen) &  vbCrLf 
Next
End If


e non vedo differenze da quella che ho postato....insomma mi fa il controllo così come la mia... cioè lui ogni 140 va a capo... ma se al 138 carattere io dal db ho già un acapo.... mi succede che mi fa una nuova riga con soli due carattere mi spiego.... e questo controllo che proprio non riesco a far fungere... :) dovrei far in modo che se in quei 140 c'è giàun a capo..(testo del db) allora rinizia a contare da uno.. mi spiego...?
hai qualche ssuggerimento...
mille.. grazie cmq
giuseppe
Modificato da girub il 27 maggio 2007 00.39 -

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
394 messaggi dal 11 agosto 2004
Ed hai ragione.
Quindi..
<%path=Request.ServerVariables("SERVER_NAME")
Server.ScriptTimeOut = "400000000"

If request("action") <> "" Then
action=request("action")
End If
If request.querystring("action") <> "" Then
action=request.querystring("action")
End If

If action="" Then %>
<form action="http://<%=Request.ServerVariables("SERVER_NAME") & request.servervariables("PATH_INFO")%>?action=test" method="post">
<textarea rows="12" name="testo" cols="37"></textarea><br>
<input type="submit" value="Invia">
</form>
<%End If%>

<%If action="test" Then

Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set OutStream=FileObject.CreateTextFile(Server.mappath("testo.txt"))
Outstream.WriteLine request.form("testo")
OutStream.Close
Set OutStream=Nothing
Set FileObject=Nothing

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fileadded=fs.opentextfile(server.mappath(".\testo.txt"))
While not fileadded.AtEndOfStream = True
Maxlen=140
riga=fileadded.readline
If Len(riga) > maxlen Then
'####################################
lentotale=Len(riga)
righe=Int(lentotale/maxlen)
resto=lentotale-(maxLen*righe)

For x=0 To righe
If testo="" Then
testo=Mid(riga,x+1,maxLen) & vbCrLf
Else
testo=testo & Mid(riga,(maxLen*x)+1,maxLen) & vbCrLf
End If
Next
'####################################
Else
If testo="" Then
testo=riga
Else
testo=testo & riga & Vbcrlf
End If
End If

Wend
Set fileadded=Nothing
Set fs=Nothing
response.write testo
End If%>
Di sicuro non è il modo più elegante ma al volo mi è venuto in mente questo e dovrebbe fare esattamente quello che vuoi!
81 messaggi dal 03 giugno 2001
Maxiz sempre gentilissimo e pronto alla risposta...
avevo visto questo metodo.. trovato qua e la su google... in effetti così funge se preso... da file txt visto che posso conoscere la linea...
ma purtroppo non posso utilizzare lo script in questo modo perche prendo da db con sql server.
ma quello che io mi to a impazzire.. dico...
dim testo,maxLen,att
maxLen=140 
testo=testo_abstract
  parole=split(testo," ")
  testo=""
  att=0
  for each parola in parole
  testo=testo & " " & parola
  att=att+len(parola)+1
  
  if att>=maxLen  then
    testo=testo &  vbCrLf 
    att=0
  end if  
  next



visto che questo semplicisimmo script mi funge,,, ma come ti ho detto non mi controlla se già ci sono...degli a capo dentro
perchè.. mannaggia li pescetti.. non riesco a vedere

con questo controllo...


if Instr(parole,vbCrLf)=0 then
  testo=testo &  vbCrLf 
  att=0
end if


che deve andare a capo se Instr(parole,vbCrLf)=0?

questo non vuol dire.. che dentro parole non è presente nessun vbCrLf?
secondo me è una cavolata.. ma mi sta facendo perdere più tempo.. del previsto...
anche se è pi semmplice a dirlo che a farlo... :)
se ti viene imn mente qualcosa.. birra pagata... io sono di roma..tu? :)

saluti
Giuseppe

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
394 messaggi dal 11 agosto 2004
e mica ti posso dire tutto io! :)
Salvo non fosse prevista a suo tempo questa cosa no il Vbcrlf non è inserito tra una riga e l'altra.
Prova questo codice commentato modificato:
<%path=Request.ServerVariables("SERVER_NAME")
Server.ScriptTimeOut = "400000000"
'Una volta aperto il recordset ad esempio objrs e il campo del testo è testo...



Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set OutStream=FileObject.CreateTextFile(Server.mappath("testo.txt"))
'CHIARO??? :)
'Outstream.WriteLine objrs("testo")
OutStream.Close
Set OutStream=Nothing
Set FileObject=Nothing

Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set fileadded=fs.opentextfile(server.mappath(".\testo.txt"))
While not fileadded.AtEndOfStream = True
Maxlen=140
riga=fileadded.readline
If Len(riga) > maxlen Then
'####################################
lentotale=Len(riga)
righe=Int(lentotale/maxlen)
resto=lentotale-(maxLen*righe)

For x=0 To righe
If testo="" Then
testo=Mid(riga,x+1,maxLen) & vbCrLf
Else
testo=testo & Mid(riga,(maxLen*x)+1,maxLen) & vbCrLf
End If
Next
'####################################
Else
If testo="" Then
testo=riga
Else
testo=testo & riga & Vbcrlf
End If
End If

Wend
Set fileadded=Nothing
Set fs=Nothing

'A questo punto la variabile testo contiente in testo allineato!
%>
81 messaggi dal 03 giugno 2001
grande.. hai ragione... passo il recordset su testo così... funge...
l'unica cosa che mi taglia le parole che vanno a capo...

su cosa posso lavorare. ho provatoi a fare un controlo del genere...

testo=riga
parole=split(testo," ")
e poi il tuo controllo...
ma naturalmente.. sbaglio..


o in questo modo ci devo rinunciare..?

------------------------------------
"Nella vita non si è mai fermi o si va avanti o... si va indietro"
394 messaggi dal 11 agosto 2004
Avevo già notato questa cosa ma così al volo mi era riuscita così..
Vedo se sistemo e me la salvo nella mia cartellina degli script vari se risolvo..
Ma non credo sarà così facile.
se ci riesci fammi sapere!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.