Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Embed PDF into XML for invoice, UBL 2.1
Message
 
To
07/10/2021 03:53:38
General information
Forum:
Visual FoxPro
Category:
XML, XSD
Miscellaneous
Thread ID:
01682446
Message ID:
01682455
Views:
46
Hi,

Hmm, bug.

Please, change next tow rows:
*laBase64(62)="+" && bad index
*laBase64(63)="/" && bad index

laBase64(63)="+" && fix bug
laBase64(64)="/" && fix bug
MartinaJ

>Thanks for your help.
>When I tried to execute code error ocured (attached picture). Can you help me?
>
>
>
>>I need to create invoice as XML file in UBL 2.1 format. Mandatory field is attached PDF invoice. Can you help me how to embed PDF invoice in XML (VFP 6)?
>>Thanks in advance.
>
>Hi,
>
>
>lcData=FILETOSTR("output.pdf") && you need VFP 6.0 SP3
>lcDataBase64=ToBase64(lcData)
>
>PROCEDURE ToBase64()
>LPARAM lcSource
>LOCAL lii,liPom,lcCode,liChar
>LOCAL ARRAY laBase64(64)
>
>lcCode=""
>
>* A - 65 bc64(0) 
>* a - 97 bc64(26)
>* 0 - 48 bc64(52)
>* + - 43 bc64(62)
>* / - 47 bc64(63)
>* = - 61 bc64(65)
>
>FOR lii=0 TO 25
>    laBase64(lii+1)=CHR(lii+65)
>NEXT
>FOR lii=26 TO 51
>    laBase64(lii+1)=CHR(lii+71)
>NEXT
>FOR lii=52 TO 61
>    laBase64(lii+1)=CHR(lii-4)
>NEXT
>laBase64(62)="+"
>laBase64(63)="/"
>
>FOR lii=1 TO LEN(lcSource) STEP 3
>    
>    * nyní vezmi z prvního byte 6 bitu zleva
>    liChar=ASC(SUBST(lcSource,lii,1))
>
>    * prvních 6. bitů
>    lcCode=lcCode+laBase64(BITRSHIFT(liChar, 2)+1)
>    
>    * druhá šestice bitů
>    liPom=BITAND(liChar, 3)*16 && nechá 2 nižší bity tak jak byly a posnuje o 4 bity
>
>    liChar=ASC(SUBST(lcSource,lii+1,1)) && načti další znak
>    * a zněj potřebuju 4 vyšší bity
>    * (posunu je do prava a přičtu to k nižžším bitům předchozího výsledku)
>    lcCode=lcCode+laBase64(liPom+BITRSHIFT(liChar, 4)+1)
>
>    IF LEN(SUBST(lcSource,lii+1,2))=0 && není-li druhý a třetí znak
>       lcCode=lcCode+"=="
>       LOOP
>    ENDIF
>
>    * třetí šestice bitů
>    * zdruhého byte potřebuju nižší 4 bity
>    liPom=BITAND(liChar, 15)*4 && nechá 4 nižší bity tak jak byly a posunu je do leva o dva bity
>
>    liChar=ASC(SUBST(lcSource,lii+2,1)) && načti další znak
>
>    * a zněj potřebuju 2 vyšší bity
>    * (posunu je do prava a přičtu to k nižžším bitům předchozího výsledku)
>    lcCode=lcCode+laBase64(liPom+BITRSHIFT(liChar, 6)+1)
>
>    IF LEN(SUBST(lcSource,lii+2,1))=0 && není-li třetí znak
>       lcCode=lcCode+"="
>       LOOP
>    ENDIF
>
>    * čtvrtá šestice bitů
>    * zdruhého byte potřebuju nižší 4 bity
>    * nechá 6 nižších bitů tak jak byly
>
>    lcCode=lcCode+laBase64(BITAND(liChar, 63)+1)
>
>NEXT
>RETURN lcCode
>
>
>
>MartinaJ
"Navision is evil that needs to be erazed... to the ground"

Jabber: gorila@dione.zcu.cz
Jabber? Jabbim
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform