Just nu i M3-nätverket
Jump to content

hjälp med ABCPDF PDF-faktura


gelki

Recommended Posts

Hej!

Jag undrar om det är någon som jobbat med PDF Komponenten ABCPDF! och om du har det så önskar jag lite hjälp. Fungerande lösning eller ett förslag som leder till en lösning prisas med en symbolisk summa av 300:- via direktbetalning på ditt konto.

 

Problem:

Anta att du ska presentera kanske 100 olika artiklar på fakturan. Varje blad på fakturan kan max innehålla 25 st order rader.

Frågan:

hur i h.. gör man så att sidbrytning träder i kraft efter de 25 order raderna samt resterande orderraderna prensenteras på nästa sida och så vidare...

 

Här kommer koden:

<%
Set theDoc = Server.CreateObject("ABCpdf6.Doc")
theDoc.Units = "mm"
theDoc.TopDown = True

i=0
for counter = 1 to 100 step 4 'när orderraderna presenteras så vill man ju INTE göra 5x25 kordinater för hand därför nedanstående.
i=i+1

'============================================ order rader ====================================================
'#-  Artnr -#	
theDoc.Rect.SetRect 22, 100+counter, 40, 4
theDoc.HPos = 0.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana") 
theDoc.AddText(i)
'theDoc.FrameRect
'#-  Artnr END -#	
'#-  Benämning -#	
theDoc.Rect.SetRect 62,  100+counter, 70, 4
theDoc.HPos = 0.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana") 
theDoc.AddText("cddffr ggfgfggfgfgg ffgfggfg") & vbcrlf
'theDoc.FrameRect
'#-   Benämning END #	
'#- A-pris -#	
theDoc.Rect.SetRect 132,  100+counter, 25, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana") 
theDoc.AddText("99.000 kr") & vbcrlf
'theDoc.FrameRect
'#-  A-pris END #	
'#- Antal  -#	
theDoc.Rect.SetRect 157,  100+counter, 15, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana") 
theDoc.AddText("1 st") & vbcrlf
'theDoc.FrameRect
'#- Antal END #	
'#- Belopp  -#	
theDoc.Rect.SetRect 172,  100+counter, 25, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana") 
theDoc.AddText("99.000 kr") & vbcrlf
'theDoc.FrameRect
'============================================ order rader END ================================================
'y=y+1
next 'for counter = 1 to 100 step 4 



'#- ram runt hela belopp sidan där alla rader presenteras #	
theDoc.Width = 0.2
theDoc.Rect.SetRect 20, 215, 180, 125
theDoc.FrameRect 3, 3 ' 3,3=runda hörn
'#- ram runt hela belopp sidan där alla rader presenteras END #

'#-  Order rader rubriker linje  -#	
theDoc.Width = 0.1
theDoc.Color = "0 0 0"
theDoc.AddLine 20, 95, 200, 95
'#-  Order rader rubriker linje  END -#

'#- etikett art.Nr -#	
theDoc.Rect.SetRect 22, 95, 40, 4
theDoc.HPos = 0.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana-bold") 
theDoc.AddText("Artnr") & vbcrlf
'theDoc.FrameRect
'#- etikett art.Nr END -#	
'#- etikett Benämning -#	
theDoc.Rect.SetRect 62, 95, 70, 4
theDoc.HPos = 0.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana-bold") 
theDoc.AddText("Benämning") & vbcrlf
'theDoc.FrameRect
'#-  etikett Benämning END #	
'#- etikett A-pris -#	
theDoc.Rect.SetRect 132, 95, 25, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana-bold") 
theDoc.AddText("A-Pris") & vbcrlf
'theDoc.FrameRect
'#-  etikett A-pris END #	
'#- etikett Antal  -#	
theDoc.Rect.SetRect 157, 95, 15, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana-bold") 
theDoc.AddText("Antal") & vbcrlf
'theDoc.FrameRect
'#- etikett Antal END #	
'#- etikett Belopp  -#	
theDoc.Rect.SetRect 172, 95, 25, 4
theDoc.HPos = 1.0
theDoc.FontSize = 3
theDoc.Font = theDoc.AddFont("verdana-bold") 
theDoc.AddText("Belopp") & vbcrlf
'theDoc.FrameRect
'#- etikett Belopp END #	

'Next 'For g = 1 To sidloops

'#- spara på disk PDF dokumentet #'
theDoc.Save(Server.MapPath("../../orders/" & "test" &".pdf"))
theDoc.Clear()
Set theDoc = Nothing
'#-spara på disk PDF dokumentet slut #'

response.redirect("../../orders/" & "test" &".pdf")
%>

 

KOD-taggar tillagda av moderator

 

[inlägget ändrat 2008-09-16 13:35:53 av Cluster]

Link to comment
Share on other sites

Har bara som hastigast ögnat igenom dokumentationen (vilket kan vara ett tips ;)) men där verkar det som att komponenten skall respektera CSS-sidbrytningar.

Dvs. om du skickar ut t.ex:

<div style="page-break-before:always">&nbsp;</div> 

Så skall du få en sidbrytning där. Sen får du såklart fixa din loop så att dina andra element (som skall vara på alla sidor) skrivs ut igen.

 

/Cluster

------------------------------------------------------

I do not fear computers. I fear the lack of them

--------> http://eforum.kicks-ass.net <---------

 

Link to comment
Share on other sites

Tack för försöket!

Dock har jag naturligvis kollat även på denna lösning. Det du skriver är en text i html läge. Min PDF kommer INTE att stödja html taggar. Vilket behövs för att din break kod ska fungera.

följande finns i dokumentationen:

 

theID = theDoc.AddHTML("", theID)

 

och just detta kan jag inte använda! (AddHTML) för att aktivera html

läs frågan och försök förstå vad jag är ute efter!

titta extra mellan orderraderna. Det är där som magic händer.

 

 

 

 

Link to comment
Share on other sites

Jag har läst frågan och jag har försökt förstå vad du är ute efter. Att du inte kunde tänka dig att använda html för din faktura kunde jag dock inte gissa mig till.

 

Då antar jag att du kan använda dig av AddPage() för att på lämpligt ställe (använd en räknarvariabel i loopen) skapa en ny sida och fortsätta att skriva ut på den.

http://www.websupergoo.com/helppdf6/source/5-object_reference/doc/2-properties/page.htm

 

 

/Cluster

I do not fear computers. I fear the lack of them

> http://eforum.kicks-ass.net <-

 

 

[inlägget ändrat 2008-09-16 20:25:04 av Cluster]

Link to comment
Share on other sites

Alltså om detta problemet hade varit dokumenterat så hada jag naturligvis inte skrivit det här. Att komma med förslag som Läs manualer, instruktioner, svar av typen har du testat med AddPage() är av ringa intresse då jag redan passerat det stadiet.

 

Jag söker kodmässigt svar inte att man kan lägga in lite addpage här och köra lite slingor där! och få lite länkar till websupergoo (där man kan typ utantill hehe)

Jag vill betala för lösningen impenterat i koden.

Men tack för at du visat intresset och tålamod bara det är beundransvärt. Eller jaha nu fattar jag man får tydligen poäng om svaret är bra! Ja du kan både få 5:an och 300 redan ikväll bara detta löser sig.

 

Link to comment
Share on other sites

Alltså om detta problemet hade varit dokumenterat så hada jag naturligvis inte skrivit det här.
Problemet är mycket väl dokumenterat, dvs hur får man i vbscript någonting att hända vid angiven upprepning i en loop.

Det är knappast något som är unikt för abcpdf och därför hittar du inte lösningen där.

Det kan man göra på olika sätt och man använder sig precis som jag skrev tidigare vanligtvis av en räknarvariabel som man kollar värdet på i varje iteration av loopen.

 

Att komma med förslag som Läs manualer, instruktioner, svar av typen har du testat med AddPage() är av ringa intresse då jag redan passerat det stadiet.
Uppenbarligen inte.

Jag trodde att du enbart hade svårt att komma på hur du skulle skapa en ny sida (vilket båda av mina två tidigare svar löser på olika sätt) men problemet var tydligen mer grundläggande än så.

Du hade i din kod varken en fungerande kod för att skapa en ny sida eller någon kod för att kunna hålla reda på när det var dags att skapa en ny sida.

 

länkar till websupergoo (där man kan typ utantill hehe)
Kunna utantill och förstå är två olika saker, vilket här blir mycket tydligt.

 

Jag söker kodmässigt svar
Du vill alltså att någon skrivet koden åt dig så att du slipper lära dig själv?

Ok, here goes:

<%
SET theDoc = Server.CreateObject("ABCpdf6.Doc")

isFirstPage = True
intRows=0
intBottomPos=100
FOR counter = 1 TO 100
  IF intRows=25 OR isFirstPage THEN
     isFirstPage = False
     intRows=0
     intBottomPos=100
     theDoc.Units = "mm"
     theDoc.TopDown = True
     theDoc.Page = theDoc.AddPage()
     theDoc.Pos.X = 0
     theDoc.Pos.Y = 0

     '#- ram runt hela belopp sidan där alla rader presenteras #   
     theDoc.Width = 0.2
     theDoc.Rect.SetRect 20, 215, 180, 125
     theDoc.FrameRect 3, 3 ' 3,3=runda hörn
     '#- ram runt hela belopp sidan där alla rader presenteras END #

     '#- Order rader rubriker linje -#   
     theDoc.Width = 0.1
     theDoc.Color = "0 0 0"
     theDoc.AddLine 20, 95, 200, 95
     '#- Order rader rubriker linje END -#

     '#- etikett art.Nr -#   
     theDoc.Rect.SetRect 22, 95, 40, 4
     theDoc.HPos = 0.0
     theDoc.FontSize = 3
     theDoc.Font = theDoc.AddFont("verdana-bold") 
     theDoc.AddText("Artnr") & vbcrlf

     '#- etikett art.Nr END -#   

     '#- etikett Benämning -#   
     theDoc.Rect.SetRect 62, 95, 70, 4
     theDoc.HPos = 0.0
     theDoc.FontSize = 3
     theDoc.Font = theDoc.AddFont("verdana-bold") 
     theDoc.AddText("Benämning") & vbcrlf

     '#- etikett Benämning END #   

     '#- etikett A-pris -#   
     theDoc.Rect.SetRect 132, 95, 25, 4
     theDoc.HPos = 1.0
     theDoc.FontSize = 3
     theDoc.Font = theDoc.AddFont("verdana-bold") 
     theDoc.AddText("A-Pris") & vbcrlf

     '#- etikett A-pris END #   

     '#- etikett Antal -#   
     theDoc.Rect.SetRect 157, 95, 15, 4
     theDoc.HPos = 1.0
     theDoc.FontSize = 3
     theDoc.Font = theDoc.AddFont("verdana-bold") 
     theDoc.AddText("Antal") & vbcrlf
     '#- etikett Antal END #   

     '#- etikett Belopp -#   
     theDoc.Rect.SetRect 172, 95, 25, 4
     theDoc.HPos = 1.0
     theDoc.FontSize = 3
     theDoc.Font = theDoc.AddFont("verdana-bold") 
     theDoc.AddText("Belopp") & vbcrlf
     '#- etikett Belopp END #
  END IF
  intRows=intRows+1
  intBottomPos=intBottomPos+4
  '============================================ order rader ====================================================
  '#- Artnr -#   
  theDoc.Rect.SetRect 22, intBottomPos, 40, 4
  theDoc.HPos = 0.0
  theDoc.FontSize = 3
  theDoc.Font = theDoc.AddFont("verdana") 
  theDoc.AddText(counter)
  '#- Artnr END -#   

  '#- Benämning -#   
  theDoc.Rect.SetRect 62, intBottomPos, 70, 4
  theDoc.HPos = 0.0
  theDoc.FontSize = 3
  theDoc.Font = theDoc.AddFont("verdana") 
  theDoc.AddText("cddffr ggfgfggfgfgg ffgfggfg") & vbcrlf
  '#- Benämning END #   

  '#- A-pris -#   
  theDoc.Rect.SetRect 132, intBottomPos, 25, 4
  theDoc.HPos = 1.0
  theDoc.FontSize = 3
  theDoc.Font = theDoc.AddFont("verdana") 
  theDoc.AddText("99.000 kr") & vbcrlf
  '#- A-pris END #   

  '#- Antal -#   
  theDoc.Rect.SetRect 157, intBottomPos, 15, 4
  theDoc.HPos = 1.0
  theDoc.FontSize = 3
  theDoc.Font = theDoc.AddFont("verdana") 
  theDoc.AddText("1 st") & vbcrlf
  '#- Antal END #   

  '#- Belopp -#   
  theDoc.Rect.SetRect 172, intBottomPos, 25, 4
  theDoc.HPos = 1.0
  theDoc.FontSize = 3
  theDoc.Font = theDoc.AddFont("verdana") 
  theDoc.AddText("99.000 kr") & vbcrlf
  '#- Belopp END -#   

  '============================================ order rader END ================================================
NEXT

'#- spara på disk PDF dokumentet #'
strFileName = "faktura_"&Date()&".pdf"
theDoc.Save(Server.MapPath("../../orders/"&strFileName))
theDoc.Clear()
SET theDoc = Nothing
'#-spara på disk PDF dokumentet slut #'

response.redirect("../../orders/"&strFileName)
%>

 

jaha nu fattar jag man får tydligen poäng om svaret är bra! Ja du kan både få 5:an och 300 redan ikväll bara detta löser sig.
Jag (och de flesta här på eforum) hjälper till för att vi tycker det är kul inte för att samla poäng eller pengar. Om du vill ge poäng för ett bra svar så tackar jag och tar emot.

Några pengar vill jag dock inte ha.

 

/Cluster

------------------------------------------------------

I do not fear computers. I fear the lack of them

--------> http://eforum.kicks-ass.net <---------

 

Link to comment
Share on other sites

Hmmm.... tja, pengar vill man väl iof alltid ha :)

Skulle jag dock ta betalt för de insatser jag gör här på eforum skulle de 300:- som gelki erbjöd inte räcka långt. Jag skulle inte ens svara i telefon/läsa tråden.

 

/Cluster

------------------------------------------------------

I do not fear computers. I fear the lack of them

--------> http://eforum.kicks-ass.net <---------

 

Link to comment
Share on other sites

Skulle jag dock ta betalt för de insatser jag gör här på eforum
Ja, undra hur mycket man hade lyckats dra in för alla tid/hjälp man gett Eforum...

Kanske skulle kunna bli en semester om året :)

 

Link to comment
Share on other sites

:thumbsup:

Cluster sluta lipa nu!

Du är helt enkelt kungen! Funkade galant och var precis det jag önskade vad jag kunde se av körningen. Bara du läser ordentligt så löser du allt!

 

Jag vill komma i kontakt med dig, messa mig. Gillar du stålar som jag så hör av dig :-)

 

Som sagt tack ännu en gång! Men adda mig på mSN [gelki @ hotmail . com]

 

Link to comment
Share on other sites

Haha. Här lipas det sällan, och aldrig för någon tråkig kommentar från någon på eforum.

 

Bara du läser ordentligt så löser du allt!
Skulle vilja säga detsamma. Om du läser/lär dig mer om asp i allmänhet och de komponenter du jobbar med i synnerhet så borde du kunna lyckas göra det du önskar :)

 

Eftersom du är ny på eforum så vill jag hälsa dig välkommen och passa på att komma med lite råd.

 

Tanken med eforum är att andra skall kunna se de frågor och svar som skrivs här. Att utbyta kunskap, erfarenheter och åsikter samt att dessa utbyten skall komma fler till gagn än enbart två chattande personer. Alltså kommer i alla fall jag inte lägga till någon härifrån på messenger eller annan IM. Kom ihåg att eforum på detta sätt blir en enorm kunskapsbank för framtiden (detta innebär även att du kan hitta väldigt mycket skrivet om det mesta bara du söker).

 

Så om du vill ha hjälp så får du ställa en fråga i lämpligt forum och så kan vem som helst (inkl. undertecknad) hjälpa dig efter bästa förmåga och vilja.

 

Du bör kanske även se till att vara lite tydligare i din frågeställning/problembeskrivning, dessutom kanske vara lite mer ödmjuk inför det faktum att vi andra inte kan läsa dina tankar utan försöker så gott vi kan att hjälpa till.

 

/Cluster

------------------------------------------------------

I do not fear computers. I fear the lack of them

--------> http://eforum.kicks-ass.net <---------

 

Link to comment
Share on other sites

Du har naturligtvis lite rätt! Jag kan vara lite hetsig

:)

Men det är ju endå så att talanger som du borde kanske använda tiden till annat. O... andra sidan så ska du ju inte det eftersom du gagnar alla. Så jag bugar och tackar ödmjukast. Kommer återkomma till asp/vb forumet i fortsättningen för lite gratis kod och fortsätta att diskutera med den fina socialistiska tonen här hehe.

Det är ju ganska ovanligt att hitta människor som bara ger och ger. Jag menar dig Cluster. Jag vill fortfarande belöna dig då jag belönar duktiga och smiskar de dåliga. Inkl. kvinnor hehe.

 

Och jag ska försöka vara ännu tydligare i framtiden så det slutas att lipas.

 

:thumbsup:

 

Link to comment
Share on other sites

Om du vill slippa det "socialistiska" så skickar jag mer än gärna en offert nästa gång du ställer en fråga.;) Jag har inga som helst problem att ta betalt för mina tjänster i min yrkesroll...

 

 

/Cluster

------------------------------------------------------

I do not fear computers. I fear the lack of them

--------> http://eforum.kicks-ass.net <---------

 

Link to comment
Share on other sites

majla mig så sättter jag in stålarna ... inga probl.

Gonatt på dig hehe.

:thumbsup:

"Gör så gott du kan. Det du inte kan köper du :-)"

 

[inlägget ändrat 2008-09-16 23:29:04 av gelki]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...