Printing isn't correct on every printers
-
- Posts: 39
- Joined: Sun Aug 13, 2006 12:46 pm
- Contact:
-
- Posts: 39
- Joined: Sun Aug 13, 2006 12:46 pm
- Contact:
Print out is correct now. Thanks
But the PDF and image exports, with TExtraDevice, didn't work anymore. It seems that the correction for the print output isn't compatible with TExtraDevice export.
See my bug report at http://www.trichview.com/forums/viewtopic.php?t=1426
But the PDF and image exports, with TExtraDevice, didn't work anymore. It seems that the correction for the print output isn't compatible with TExtraDevice export.
See my bug report at http://www.trichview.com/forums/viewtopic.php?t=1426
-
- Posts: 39
- Joined: Sun Aug 13, 2006 12:46 pm
- Contact:
-
- Site Admin
- Posts: 17606
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
-
- Posts: 39
- Joined: Sun Aug 13, 2006 12:46 pm
- Contact:
-
- Site Admin
- Posts: 17606
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
For printing in images, you need to fix ppRichView.pas.
For RB7 wrapper, you need to replace TppDrawRichView.DrawTo (I marked the lines to add)
For RB7 wrapper, you need to replace TppDrawRichView.DrawTo (I marked the lines to add)
Code: Select all
procedure TppDrawRichView.DrawTo(lCanvas: TCanvas; ADrawRect: TRect);
var
lHelper: TRVReportHelper;
lRVStyle: TRVStyle;
PPI: Integer;
begin
lHelper := TRVReportHelperRef.Create(nil);
lRVStyle := TRVStyle.Create(Nil);
try
if not TPPRICHVIEWUSEPRINTERRES then
lRVStyle.TextStyles.PixelsPerInch := TPPRICHVIEWREFCANVASPPI;
SetHelperDefaults(lHelper);
lHelper.RichView.Style := lRVStyle;
FStream.Position := 0;
lHelper.RichView.LoadRVFFromStream(FStream);
lHelper.Init(FCanvasRef, FPageWidth);
lHelper.FormatNextPage(FPageHeight * 2);
if Transparent then begin
lCanvas.CopyMode := cmSrcAnd;
end else begin
lCanvas.CopyMode := cmSrcCopy;
lCanvas.Brush.Style := bsSolid;
lCanvas.Brush.Color := FColor;
lCanvas.FillRect(ADrawRect);
end;
lCanvas.Brush.Style := bsClear;
IntersectClipRect(lCanvas.Handle, ADrawRect.Left, ADrawRect.Top, ADrawRect.Right, ADrawRect.Bottom);
SetMapMode(lCanvas.Handle, MM_ANISOTROPIC);
SetWindowExtEx(lCanvas.Handle, FPageWidth, FPageHeight, Nil);
PPI := lCanvas.Font.PixelsPerInch;
if not TPPRICHVIEWUSEPRINTERRES then
lCanvas.Font.PixelsPerInch := TPPRICHVIEWREFCANVASPPI
[color=blue]else
lCanvas.Font.PixelsPerInch := FCanvasRef.Font.PixelsPerInch;[/color]
SetViewportExtEx(lCanvas.Handle, ADrawRect.Right - ADrawRect.Left, ADrawRect.Bottom - ADrawRect.Top, Nil);
SetViewportOrgEx(lCanvas.Handle, ADrawRect.Left, ADrawRect.Top, Nil);
lHelper.TransparentBackground := FTransparent;
if not Transparent then
lHelper.RichView.Color := Color;
lHelper.DrawPage(1, lCanvas, True, FPageHeight);
lCanvas.Font.PixelsPerInch := PPI;
SetMapMode(lCanvas.Handle, MM_TEXT);
SetViewportOrgEx(lCanvas.Handle, 0, 0, Nil);
SelectClipRgn(lCanvas.Handle, 0);
finally
lHelper.Free;
lRVStyle.Free;
end;
end;
-
- Site Admin
- Posts: 17606
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
Do you really mean TExtraDevices (www.waler.com)?
In my version of TExtraDevices, they do not use RichView drawing procedure when exporting to PDF. Instead, it saves RichView to RTF, then draw this RTF as it draws standard RichEdit.
So changes in ppRichView drawing do not affect PDF export with TExtraDevices.
In my version of TExtraDevices, they do not use RichView drawing procedure when exporting to PDF. Instead, it saves RichView to RTF, then draw this RTF as it draws standard RichEdit.
So changes in ppRichView drawing do not affect PDF export with TExtraDevices.
-
- Posts: 39
- Joined: Sun Aug 13, 2006 12:46 pm
- Contact:
-
- Posts: 42
- Joined: Wed Feb 28, 2007 4:14 am
Greetings!
Sergey, I've got some troubles trying to print my RichView Document with TRVPrint on HP LaserJet 1100.
The main trouble is that TRVPrint doesn't print line spacings correctly - lines on a page looks overlapped
How should I solve this problem?
On Rich Preview everything looks just fine, but on paper it doesn't look like WISYWIG.
PS In my editor, I didn't change any linespacing parameters in paragraphs - so it's default - measured in percents and set to 100.
PPS In my situation it seems like printing doesn't implement linespacing feature at all
Well, I've tested source from demos - it looks ok, but I couldn't find, why it's wrong, then I'm trying to print my docs. The only thing, that I do - I loading document from database blob and trying to print it. Maybe I need to reformat it first - or something else - but on initalization I use FormatPages method - and everything looks fine.
PPPS I've found, that this doesn't work with files, created in my overrided RichViewEditor. Maybe, the problem is in creating new styles and paragraphs? I didn't make them standard - is where any additional parameters needed?
Actually, I didn't make any criminal actions in creating new styles (as I think )
It looks like that
And for ParaInfo
Sergey, I've got some troubles trying to print my RichView Document with TRVPrint on HP LaserJet 1100.
The main trouble is that TRVPrint doesn't print line spacings correctly - lines on a page looks overlapped
How should I solve this problem?
On Rich Preview everything looks just fine, but on paper it doesn't look like WISYWIG.
PS In my editor, I didn't change any linespacing parameters in paragraphs - so it's default - measured in percents and set to 100.
PPS In my situation it seems like printing doesn't implement linespacing feature at all
Well, I've tested source from demos - it looks ok, but I couldn't find, why it's wrong, then I'm trying to print my docs. The only thing, that I do - I loading document from database blob and trying to print it. Maybe I need to reformat it first - or something else - but on initalization I use FormatPages method - and everything looks fine.
PPPS I've found, that this doesn't work with files, created in my overrided RichViewEditor. Maybe, the problem is in creating new styles and paragraphs? I didn't make them standard - is where any additional parameters needed?
Actually, I didn't make any criminal actions in creating new styles (as I think )
It looks like that
Code: Select all
FHyperlinkStyle := TFontInfo.Create(nil);
FHyperlinkStyle.Style := FHyperlinkStyle.Style + [fsUnderline];
FHyperlinkStyle.Color := clBlue;
FHyperlinkStyle.Jump := True;
FHyperlinkStyle.JumpCursor := crHandPoint;
FHyperlinkStyle.HoverColor := clWhite;
FHyperlinkStyle.HoverBackColor := clBlue;
FHyperlinkStyle.Protection := [rvprModifyProtect, rvprStyleProtect, rvprDoNotAutoSwitch];
Style.TextStyles.Add;
NewStyleNo := Style.TextStyles.Count - 1;
Style.TextStyles[NewStyleNo].Assign(FHyperlinkStyle);
Style.TextStyles[NewStyleNo].Standard := False;
Code: Select all
pi.Assign(Style.ParaStyles[GetItemPara(i)]);
pi.LeftIndent := ListLevel.MarkerIndent;
NewStyleNo := Style.ParaStyles.FindSuchStyle(0, pi, RVAllParaInfoProperties);
if NewStyleNo = -1 then begin
Style.ParaStyles.Add;
NewStyleNo := Style.ParaStyles.Count-1;
Style.ParaStyles[NewStyleNo].Assign(pi);
Style.ParaStyles[NewStyleNo].Standard := False;
end;
GetItem(i).ParaNo := NewStyleNo;
CurParaStyleNo := NewStyleNo;
-
- Site Admin
- Posts: 17606
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
-
- Posts: 42
- Joined: Wed Feb 28, 2007 4:14 am
Well, from your demo my documents are printed wonderfully well. But I couldn't find, what can make it work so bad from my inherited class - everything formatted and showed in the best way.Sergey Tkachenko wrote:Does the problem persist if you save document created by your program and load it in demo?
If yes, please send this document to me.
I'll try to make invisible standard component on my form to assign RVData and RVStyle for printing - if nothing helps, I'll post the load method here.
In my case it looks like it printing whole document, using standard style - Arial 10 pt - for page marking and defining border of items in page.
Hyperlinks are also printed - but with strange overlapping - like they aren't text items at all.
-
- Posts: 42
- Joined: Wed Feb 28, 2007 4:14 am
Well, I didn't find this bug
First, I thought, that rvData is not assign properly.
I've traced program in AssignSource and found that all data is assigned properly.
For example
It's string tag in text for hyperlink - and it's seems, that all works correctly in this stage.
Despite that I'm using inherited class in my editor, I didn't noticed any troubles in a stage of variables initialization.
Styles object and RVData created correctly - but something inside of TRVPrint makes correct work impossible
Sergey, do you have any ideas about this situation? Your demos works perfectly - but for some reasons it won't work in my situation.
PS I've traced all stages of printing - even OnSendingToPrinter - page by page - all RVData with all links, styles and other things exists, but it printed in described way - with marking of Arial 10 pt for whole text
Hyperlink doesn't look marked at all.
First, I thought, that rvData is not assign properly.
I've traced program in AssignSource and found that all data is assigned properly.
For example
Code: Select all
PChar(TCustomRVItemInfo(rv.RVData.Items.Objects[5]).Tag)
Despite that I'm using inherited class in my editor, I didn't noticed any troubles in a stage of variables initialization.
Styles object and RVData created correctly - but something inside of TRVPrint makes correct work impossible
Sergey, do you have any ideas about this situation? Your demos works perfectly - but for some reasons it won't work in my situation.
PS I've traced all stages of printing - even OnSendingToPrinter - page by page - all RVData with all links, styles and other things exists, but it printed in described way - with marking of Arial 10 pt for whole text
Hyperlink doesn't look marked at all.
-
- Site Admin
- Posts: 17606
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
-
- Posts: 42
- Joined: Wed Feb 28, 2007 4:14 am
It's sadly - but "no" for a two times.Sergey Tkachenko wrote:May be data was converted to wrong styles BEFORE calling AssignSource?
May be you loaded/saved document using trichview that is not "allow adding styles dynamically" mode?
The first thing that I've traced, was AssignSource method - before and after - it takes correct pointer to RVData and correct pointer to RVStyle
All flags are set properly I've examined this part numerous times - and it loads saved rvfs from demos correctly.
Also, I've implemented Format for RichViewEdit and FormatPages methods directly before calling Print method. But big rvf file from demo (I've converted demo.rtf to rvf) still looks totally unformatted
On the 10th of May I'll test my preview dialog and print setup from base RichViewEdit, not from inherited class, and shall try to print rvf documents from richview demo package.
-
- Posts: 42
- Joined: Wed Feb 28, 2007 4:14 am