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