You are not logged in.
Pages: 1
With respect to my three posts above, some more information, .... I have downloaded the latest HTMLViewer code from http://github.com/BerndGabriel/HtmlViewer and my problem still exists
With respect to my two posts above, some more information, .... setting the left margin to 1 and leaving the rest as 0 causes the tall compressed PDF output
With respect to my post above, some more information, .... I have worked out that the "ridiculous" PDF has it's image height too large causing the pdf to look compressed and tall thereby leaving out the bottom part of my HTML from the PDF completely.
I have also made the necessary changes to SynPdf.pas to support A2, A1 and A0 paper sizes if anyone is interested. Similarly I have added A2, A1 and A0 options to htm2pdf.exe
Now I just need to resolve the non-zero (centimeters) margin value problem
I have been using nightlybuild version of the Synopse framework since last year on Delphi XE2 and only noticed the htm2pdf project today. I was initially unable to compile because I did not have the THTMLViewer component installed.
After getting that installed, I I got compile errors in that the TPrinterState constants could not be resolved !!! While TPrinterState itself could be resolved none of the psNoHandle, psHandleIC, psHandleDC contants were found !!! I had to change all instances of these to TPrinterState(0), TPrinterState(1) and TPrinterState(2) respectively !!
Eventually was able to compile htm2pdf.exe. However, when I use any non-zero (centimetrs) value for margins my resulting PDF looks ridiculous.
I eventually found http://blog.synopse.info/post/2010/07/1 … -free-tool page and downloaded the compiled version of htm2pdf.exe and that works correctly.
This leads me to think that either my $Defines for XE2 are incorrect OR the htm2pdf code in the nightlybuild is somehow incorrect. Can anyone help on this?
ab,
I just want to be sure that you have received my emails. First email with changes as discussed above. Second email which also contains code for adding link support to DrawTextAcrossCols
Regards
Mike
Hi ab ...
I have succeeded in implementing multicolored lines by changing
procedure TGDIPages.DrawText(const s: string);
to
procedure TGDIPages.DrawText(const s: string; bWithNewLine : Boolean = TRUE);
and thereafter changing all subsequent calls to contain the bWithNewLine parameter as required. I have also had to add a new class member variable that keeps the remembers the last leftOffset.
Question : would you be interested in these changes? If so .... please email me and I will send you the original and changed mormotreport.pas files
Hi ab ...
I have been moving on with respect to replacing TRichEdit with TGDIPages ... still have not resolved the issue above ... but the next issue is DrawTextAcrossCols for my index, whereby I would like each index entry to hot link to a bookmark. It turns out we need
procedure DrawTextAcrossCols(const StringArray: array of SynUnicode; const BookmarkArray: array of string; BackgroundColor: TColor=clNone);
I am really trying my best to add this new methods to the as well as
procedure DrawColouredText(const StringArray: array of SynUnicode; const Color: array of integer)
as mentioned previously but it I am really battling
Regards
and
Hi ab ... I decided to bite the bullet and bypass the TRichEdit component by writing directly to the TGDIPages component. The issue I have at the moment is that I am unable to write multi-coloured lines.
I have lines that typically have red text followed by blue text followed black text .... but the DrawText() method always adds a new line and so each of my colored texts appear on a separate line. Is there any way to achieve multicolored text lines? Essentially we need a new DrawText method that is able to able to draw text from the current YPos and XPos without adding a new line after each call.
The other thought I had was adding a method called:
DrawColouredText(const StringArray: array of SynUnicode; const Color: array of integer)
which could happily add a new line at the end
Are you able to do something along these lines for us?
Regards
Thanks AB .... downloaded your update and amended my code accordingly !!
Hi ab ... managed to get it all done! The heart of the changes is redefining AppendRichEdit by adding an lst parameter as follows:
procedure AppendRichEdit(RichEditHandle: HWnd; lst : TList = NIL); // rev change by mogulza
The first line of AppendRichEdit() code has the following line added:
if lst <> NIL then lst.Clear; // rev line added by mogulza
and further down
LastChar := SendMessage(RichEditHandle, EM_FORMATRANGE, 1, Integer(@Range));
if lst <> NIL then lst.Add(pointer(LastChar)); // rev line added by mogulza
On return from AppendRichEdit, each entry of the lst variable represents a page and each page value contains the lastchar value for the page i.e. the lastchar for page 1 would be integer(lst.Items[0]) and page 2 would be integer(lst.Items[1]) etc.
Hope this all makes sense
Thanks for your help
Thanks ab ... will look into this
Thanks ab .... your suggestion can work for adding the entries. The problem would then be ... how do I know on which page (or pages) each of the index entries has ended up on, after feeding the TRichEdit content to TGDIPages ..... ?
Hi all,
I have been investigating the library for creating PDF documents of my TRichEdit content. I came upon the sample at http://synopse.info/forum/viewtopic.php?id=76 and things seem to be good so far.
I would now like to add an index of selected words to the end of the PDF but I do not understand how to do this from any of the documentation and there does not seem to be any sample code. Can anyone help me out with this please?
Regards
Pages: 1