Page 3 of 9

Re: [Module] pbPDF-Module

Posted: Thu Jun 27, 2019 12:12 pm
by blueb
Thanks Thorsten,

I'm struggling to find out why "pbPDF-Watermark.pb" does NOT display the watermark, when I run the program.

Latest Win 10 Pro and PB 5.71 B2 (x86).

Tried 3 different PDF viewers, in case they might be the issue.

Perhaps you have an idea? :?:

Re: [Module] pbPDF-Module

Posted: Thu Jun 27, 2019 12:52 pm
by Thorsten1867
BugFix: pbPDF-Watermark.pb

Re: [Module] pbPDF-Module

Posted: Thu Jun 27, 2019 12:56 pm
by blueb
Thanks Thorsten, it's appreciated. 8)

Re: [Module] pbPDF-Module

Posted: Fri Aug 09, 2019 4:05 pm
by Paul
Very nice Module.

Would you be able to give a small example of how to properly use PDF::ImageMemory with PNG image that is included in a file?
My attempts just crash on line 2284 with "MemoryID is not valid"

Re: [Module] pbPDF-Module

Posted: Sun Aug 11, 2019 4:48 pm
by Thorsten1867
I tested that.
Apparently there is only the image content in the memory and not the header.
Unfortunately it is not possible to evaluate the header and insert the image into the PDF.

Re: [Module] pbPDF-Module

Posted: Sun Aug 11, 2019 7:52 pm
by Paul
Ok, so PDF::ImageMemory doesn't work :(

I then tried with PDF::Image and unfortunately that also causes problems.
If I have an image in a header and there is more that 1 page in the PDF, the PDF that is generated is corrupt.
(I can view the first page but if I scroll to the second page Adobe Reader gives error)

Try this code with an image of your choice...

Code: Select all

#PDF=1
pdf$="test.pdf"
XIncludeFile "pbPDFModule.pbi"

Procedure Header()
  PDF::Image(#PDF, "logo.jpg",5,8,30,0)
  PDF::SetFont(#PDF, "Arial","B", 16)
  PDF::SetPosY(#PDF, 10)
  PDF::SetPosX(#PDF, 35)
  PDF::Cell(#PDF, "Test Page", 100, 16)      
  PDF::Ln(#PDF, 20)       
EndProcedure


If PDF::Create(#PDF,PDF::#Landscape,"mm",PDF::#Format_Letter)
  PDF::SetPageCompression(#PDF, #True)
  PDF::SetViewerPreferences(#PDF, PDF::#FitWindow)

  PDF::SetHeaderProcedure(#PDF,@Header())
  PDF::Enableheader(#PDF, #True)  
  PDF::AddPage(#PDF)
 
  For tmp=1 To 60
    PDF::Cell(#PDF, "This is a test"+Str(tmp), 100, 5, #False)
    PDF::Ln(#PDF)                                
  Next
        
  PDF::Close(#PDF, pdf$)    
  RunProgram(pdf$)
EndIf

Re: [Module] pbPDF-Module

Posted: Sat Aug 24, 2019 11:16 pm
by Paul
Thorsten, would you be able to take a look at this?
This module would be very useful if you could get images in the header working properly.

Re: [Module] pbPDF-Module

Posted: Sat Aug 24, 2019 11:46 pm
by Derren
Wow.
This is going to be a bunch of work to learn all these new commands, but this is 100x better than trying to create a PDF from scratch.
Thanks a TON for this Module!!! :)

Re: [Module] pbPDF-Module

Posted: Mon Aug 26, 2019 10:42 am
by Thorsten1867
Paul wrote:I then tried with PDF::Image and unfortunately that also causes problems.
If I have an image in a header and there is more that 1 page in the PDF, the PDF that is generated is corrupt.
(I can view the first page but if I scroll to the second page Adobe Reader gives error)
It was a little complicated to find the bug, but here it is:

Code: Select all

11 0 obj
<</Length 359>>
stream
2 J
0.57 w
BT /F2 12.00 Tf ET
q 85.04 0 0 NaN 14.17 NaN cm /I1 Do Q
BT /F1 16.00 Tf ET
BT 102.05 556.18 Td (Test Page) Tj ET
BT /F2 12.00 Tf ET
BT 31.18 516.27 Td (This is a test1) Tj ET
endstream
endobj
Bugfix: PDF::Image()

Re: [Module] pbPDF-Module

Posted: Mon Dec 02, 2019 12:16 pm
by hoerbie
Thanks a lot for this module.

I found two small bugs in update from 11.11.2019:

[COMPILER] Zeile 572: Constant already declared with a different value: #Version.
->#Version is declared in line 190 and again in 572, PB doesn't like this

Line 393: #Format_SRA0 = "2551.18,3628.35)"
->There is a ) where I think it shouldn't be

Re: [Module] pbPDF-Module

Posted: Tue Dec 03, 2019 2:27 pm
by Thorsten1867
Fixed

Re: [Module] pbPDF-Module

Posted: Tue Dec 03, 2019 7:36 pm
by Oliver13
I found another bug: if you encypt the PDF, images do not appear in PDF
To reproduce, please use the modified sample code below:

TX, Oliver

Code: Select all

XIncludeFile "..\pbPDFModule.pbi"

Define LinkID.i, File$ = "pbPDF-Images.pdf"

#PDF = 1

If PDF::Create(#PDF)
 
  PDF::AddPage(#PDF)
 
  LinkID = PDF::AddLinkURL(#PDF, "https://www.purebasic.com/")
 
  PDF::Image(#PDF, "PureBasic.png", 10,  10, 30, 0, LinkID)
  PDF::Image(#PDF, "PureBasic.jpg", 10, 110, 60, 0, LinkID)
  PDF::Image(#PDF, "PureBasic.jp2", 10, 210, 80, 0, LinkID)
  PDF::SetEncryption(#PDF,"test1","test",#False) ; if removed, images do appear
  PDF::Close(#PDF, File$)
EndIf

RunProgram(File$)

Re: [Module] pbPDF-Module

Posted: Tue Dec 03, 2019 11:32 pm
by normeus
@Thorsten1867, I wish you would share the secret in how you find time to work in all your great modules.

@Oliver13 [edit] Encryption might work,
I just figured it didn't since there was an error on a single line of text PDF which I encrypted,
but it turns out you get an error on non-encrypted PDFs: "invalid xref table"

The URL links for images cannot be reused so once you attach "LinkID" to the first image, the link is gone.
You can create the URL link and add it at the same time:

Code: Select all

XIncludeFile "..\pbPDFModule.pbi"

Define LinkID.i, LinkURL.i, File$ = "pbPDF-Images.pdf"

#PDF = 1

If PDF::Create(#PDF)
 
  PDF::AddPage(#PDF)
 
  LinkURL =  "https://www.purebasic.com/"
  LinkID = PDF::AddLinkURL(#PDF, "https://www.purebasic.com/")
 
  PDF::Image(#PDF, "purebasic.png", 10,  10, 30, 0, LinkID)
  PDF::Image(#PDF, "PureBasic.jpg", 10, 110, 60, 0, PDF::AddLinkURL(#PDF, LinkURL))
  PDF::Image(#PDF, "PureBasic.jp2", 10, 210, 80, 0, PDF::AddLinkURL(#PDF, LinkURL))
  PDF::EmbedFont(#PDF, "l_10646.ttf", "LucidaSans", "", PDF::#Unicode)
  PDF::SetFont(#PDF, "LucidaSans", "", 14)
  PDF::PlaceText(#PDF, "This is an embedded Unicode-font (LucidaSans)", 20, 50)
;  PDF::SetEncryption(#PDF,"test1","test",#False) ; if removed, images do appear
  PDF::Close(#PDF, File$)
EndIf

RunProgram(File$)
Norm.

Re: [Module] pbPDF-Module

Posted: Wed Dec 04, 2019 7:38 am
by Oliver13
normeus wrote:Encryption might work,
I just figured it didn't since there was an error on a single line of text PDF which I encrypted,
but it turns out you get an error on non-encrypted PDFs: "invalid xref table"

The URL links for images cannot be reused so once you attach "LinkID" to the first image, the link is gone.
Hi Norm., thank you, but regrettably this does not help either. Even if you remove all of the links, the images will not appear in the encrypted PDF.

Code: Select all

XIncludeFile "..\pbPDFModule.pbi"

Define LinkID.i, File$ = "pbPDF-Images.pdf"

#PDF = 1

If PDF::Create(#PDF)
  
  PDF::AddPage(#PDF)
  
 ; LinkID = PDF::AddLinkURL(#PDF, "https://www.purebasic.com/")
  
  PDF::Image(#PDF, "PureBasic.png", 10,  10, 30, 0)
  PDF::Image(#PDF, "PureBasic.jpg", 10, 110, 60, 0)
  PDF::Image(#PDF, "PureBasic.jp2", 10, 210, 80, 0)
  PDF::SetEncryption(#PDF,"test","test",#False) 
  
  PDF::Close(#PDF, File$)
EndIf

RunProgram(File$) ;- PDF is encrypted, but does not show images

Oliver

Re: [Module] pbPDF-Module

Posted: Thu Dec 05, 2019 3:19 am
by normeus
Oliver,
sorry my post was confusing, I just pointed out how "AddLinkURL" currently works.
nothing to do with the encryption problem.

for the encryption problem, it turns out that images are not being encrypted.
@Thorsten1867 probably just forgot to add a "#objMemory" test somewhere to encrypt images.
The PDF reader tries to change the Image which needs no changing and images don't display.



Norm.