PureBasic Forum
https://www.purebasic.fr/english/

[Module] pbPDF-Module
https://www.purebasic.fr/english/viewtopic.php?f=27&t=72031
Page 3 of 4

Author:  blueb [ Thu Jun 27, 2019 12:12 pm ]
Post subject:  Re: [Module] pbPDF-Module

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? :?:

Author:  Thorsten1867 [ Thu Jun 27, 2019 12:52 pm ]
Post subject:  Re: [Module] pbPDF-Module

BugFix: pbPDF-Watermark.pb

Author:  blueb [ Thu Jun 27, 2019 12:56 pm ]
Post subject:  Re: [Module] pbPDF-Module

Thanks Thorsten, it's appreciated. 8)

Author:  Paul [ Fri Aug 09, 2019 4:05 pm ]
Post subject:  Re: [Module] pbPDF-Module

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"

Author:  Thorsten1867 [ Sun Aug 11, 2019 4:48 pm ]
Post subject:  Re: [Module] pbPDF-Module

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.

Author:  Paul [ Sun Aug 11, 2019 7:52 pm ]
Post subject:  Re: [Module] pbPDF-Module

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:
#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

Author:  Paul [ Sat Aug 24, 2019 11:16 pm ]
Post subject:  Re: [Module] pbPDF-Module

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.

Author:  Derren [ Sat Aug 24, 2019 11:46 pm ]
Post subject:  Re: [Module] pbPDF-Module

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!!! :)

Author:  Thorsten1867 [ Mon Aug 26, 2019 10:42 am ]
Post subject:  Re: [Module] pbPDF-Module

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:
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()

Author:  hoerbie [ Mon Dec 02, 2019 12:16 pm ]
Post subject:  Re: [Module] pbPDF-Module

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

Author:  Thorsten1867 [ Tue Dec 03, 2019 2:27 pm ]
Post subject:  Re: [Module] pbPDF-Module

Fixed

Author:  Oliver13 [ Tue Dec 03, 2019 7:36 pm ]
Post subject:  Re: [Module] pbPDF-Module

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:
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$)

Author:  normeus [ Tue Dec 03, 2019 11:32 pm ]
Post subject:  Re: [Module] pbPDF-Module

@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:
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.

Author:  Oliver13 [ Wed Dec 04, 2019 7:38 am ]
Post subject:  Re: [Module] pbPDF-Module

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:
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

Author:  normeus [ Thu Dec 05, 2019 3:19 am ]
Post subject:  Re: [Module] pbPDF-Module

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.

Page 3 of 4 All times are UTC + 1 hour
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/