ThinkGeo.com    |     Documentation    |     Premium Support

PDF Sharp Extension

Hi guys. I realise this isn't the best place to post this topic, but at the PDF extension topic is getting so long, I've been asked to post my queries here.


 


I have 2 queries/problems using revision 3 of the PDF Sharp library.


1. I'm using the XGraphics class to draw borders/layout information, this all works perfectly except for the fact that I can't draw vertical text. This was a commented out section in the labrary, and I'd like to know if we can look forward to having it in a later release.


2. ExtentHelper. for some reason the extent helper in revision 3 doesn't seem to be doing anything. For example if I trasfere my map on screen to an A2 page, in revision 2, my print would look almost identical to what was displayed on screen. however in revision 3 is doesn't seem to be resizing/rescalling my extent to look the same, so now my visible (onscreen) map sits in the top left of my A2 map with a large amount of addional map showing all around it. Please see my attachment. The Blue represents what was dispayed on my Web Map. The Red is what it obviously shows on my print. The problem being that it should scale to blue to fit the red area!


Please ignore the mention of pixels and points in the attached image as it was used for a previous query. Also the vertical text in the attachment was due to the fact that I was original using an adornment layer and not the XGraphics class to draw my layout.



Jeremy, 


Hi, Jeremy, see you again, Thanks for your post here that will make things much easier than reading from a long history posts.


Hopefully this time we really can give you some help to solve your problem.


About your first problem: Even though the PDFSharp did not implement the vertical text drawing API, we can go around this issue easily.Following is some reference code you can take reference to draw Vertical text:



 XGraphics XGraphics = XGraphics.FromPdfPage(page);
try
{
  XGraphics.DrawRectangle(XPens.Black, new System.Drawing.Rectangle(33, 33, 654, 519));
  XGraphics.RotateAtTransform(90, new XPoint(0, 0));
  XGraphics.DrawString("ThinkGeo", new XFont("Arial", 20), XBrushes.Red, 0, 0);
XGraphics.RotateAtTransform(-90, new XPoint(0, 0));
}
finally
{
  XGraphics.Dispose();
}

Second Problem, I want to say that it screw things up when it make the PDFExtention 3.x version from 2.0 version as you said, I am sorry for that. If you want, we can send you an updated version or you can use the 2.0 version until the next public release.


But even we roll back the code to PDFExtension2.x version; we still found that there is potential problem in your demo code when you set the DrawingArea, in which the Width and Height should have the same ratio with MapControl.


For example, in WebEdition, the MapWidth : Mapheigh = 640 : 480, then you can set:



pdfPrintLayoutCanvas.DrawingArea = new System.Drawing.Rectangle(30, 30, 800, 600);

That is reasonable, because the widht: Height = 800 : 600 equals to the MapWidht : MapHeight. But  when you set like this it will cause some potential unexpected result:



pdfPrintLayoutCanvas.DrawingArea = new System.Drawing.Rectangle(30, 30, 600, 600);

Sorry for the inconvenience now!


Any more questions just let me know, we absolutely will try our best to move things forward!


Thanks.



oooh, thanks for the answer for the XGraphics drawing object. that’s perfect! 
  
 now for the map extent.  
 I thought the point of the map extent helper wasn’t just to rescale the map display, but to find the best fit for the target rectangle. My idea of it would be to find whether to  
 1. scale by width or height (which ever has the smalle ratio from source rectangle to target rectangle, it sourcerect(300, 100) targetrect(500, 400) i would scale it based on the width ratios.) 
 2. center the map in the target rectangle.  
  
 This would give you the closest correlation between the source rectangle view and the destination rectangle view.

Jeremy, 



I want to make things clear so that we are in the same line! 



My point is that the DrawingArea Width and Height ratio should be same with the Map width and Heigh ratio. I have no idea it has anything to do with the ExtentHelper functionalities. 



Thanks. 



Yale 

 



I realize this after your earlier comment.  
  
 I’m just saying that it makes no sense. for example if a have a 4:3 ratio map and I want to put it on an A4 page, thats ok, I don’t mind wasting a bit of white space on the paper. 
  
 However lets say I want to do a print to a A1 or A0 page, which happens fairly often with our clients. I can’t keep the ratio at 4:3 because I’m going to be wasting huge amounts of printing space.  
  
 We normally would have different ratios for different paper sizes to maximize the map area on the print. 
 I assumed that this is what the ExtentHelper was meant to do. though admittedly I probably assumed that incorrectly. 
  
 My question is, are we going to be getting support for scaling to different ratios in the near future?

Jeremy, 
  
 Yeah! We are on the same page now! 
  
 Let us continue your example, if a 4: 3 ratio map need to be print on: 
 A1: almost 1: 2 of DrawingArea 
 A2: almost 1: 1 of DrawingArea 
  
 In the current logic, we will enlarge the “map” from the 4:3 ratio maps by fetching more data to draw more area, so you always will see more data on your print map than the map shown on the Control if you set different ratio DrawingArea. 
  
 So your idea is that we will keep the map bitmap unchanged and stench it to match the final result of DrawingArea ratio. Personally I think it sounds reasonable in some case. 
  
 I will discuss this with my direct to see when will add this feature. 
  
 Thanks for your report and sharing. 
  
 Yale 


Thanks Yale. The reason for this request is that the client will scale the map to what he wants to print, so it shouldn’t matter how large the paper he is printing on, he should still basically get what was on the online map printed.  
  
 WYSIWYG. basically. 
  
 I’ll also be wanting to add an option where they specify a specific scale to print, but as yet I don’t foresee any issues with this.

Thanks Jeremy, 
  
 Any feedback I will let you know. 
  
 Thanks. 
  
 Yale

Has there been any update on this?

Jeremy, 
  
 This problem is still on the schedule; sorry for the inconvenience. 
  
 Anymore questions please let me know. 
  
 Thanks, 
 Howard

any further progress on this issue?

Jeremy, 
  
 We are working on this issue right now and I will give you an update on Tuesday anyway. 
  
 Thanks, 
  
 Ben

Jeremy,


Here is the sample for you,  with which you can easily print a map on different sizes of pages like A1, A2, and A4, etc. Let me know if you have more issues. 


Here are the versions of the assemblies we are using:


WebEdition: 3.1.182

MapSuiteCore: 3.1.182

PdfExtension: 3.1.182

pdfSharp: 3.0.0.0

 


Thanks,


Ben



1070-PdfExtensionSamples.zip (13.6 KB)

Thanks Ben. 
  
 Ive tried running it, and it didn’t sem to work. I’ve check my PDFSharp file versions, and they seem to be wrong, however when I download the latest on off your extensions page, even though the zip is labels rev3 it still seems to only be rev1.

Also Im afraid your comment in your example does not make sense to me.  
  
 //ratio of height and width of DrawingArea should be the same as the ratio of heigth and width of the Map1 control. 
 pdfGeoCanvas.DrawingArea = new Rectangle(0, 0, 600, 400); 
  
 Do I have to have the width height ratio set the same in my drawing area as in the map area? If this statement in correct then that limits me to the extreme by what I can display on my pdf document. 
  
 The map area on the document should be scaled, ratio set and sized based on all other data that will go to the document, Not the other way round.

Jeremy, 
  
 I downloaded the latest version and the PDFExtension.dll there is 3.1.182, the same as what I used. Can you get the latest one and have another try? 
  
 Also can you double check the attachment “PdfExtensionSamples.zip” above? That sample doesn’t have the code mentioned in your last thread, instead, it shows how to print the same map to PDF with different width / height ratio. You can select A1/A2/A4 in a dropdown list and print it with different size, have a try and I think it will solve your problem. 
  
 Thanks, 
  
 Ben

ok, I have re download your example. Not sure what I was looking at either anymore. This makes more sense. However I still seem to be unable to get the latest version of PDF Sharp. 
  
 Am I downloading it at the right place?  
  
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/16/aft/5280/afv/topic/afpgj/1/Default.aspx#5280 
  
 ??? Ive tried on 2 computers now, and maybe there is a caching issue on our proxy, but everything else seems to be fine. If this is the right place, please mail me back  and I’ll download it from outside the office.

Alright! I found version 3 in the samples folder for my installation of map suite. now your example works! I’ll play with it for a while an get back to you.

OK!!! Perfect!!! Thank you! 
  
 I still think there may be a problem with the PDF rev3 .zip file in the link above.  
  
 But now that I’m using the correct version, it all seems to be working.

Glad we could be of assistance!