Generate chart with JFreeChart and Apache PDFBOX - jfreechart

I need to generate charts using JFreeChart and then export them to PDF using Apache PDFBOX. I don't want to use iText as it cannot be used in proprietary software.
I searched all over Google, but no luck! Has anyone done it?

Copy the OutputStream from your chosen writeChartAs*() method in ChartUtilities to the InputStream used to create a PDXObjectImage in AddImageToPDF. A typical copyStream() implementation is shown here.
Addendum: Alternatively, use piped streams to copy from output to input, as shown here and here.

You can try using JasperReports. They are a bit heavy, but working good.

Related

Using X3D and Javascript

I'm supposed to develop a project using X3D. I have an idea to create a conversor of DXf file to X3D. however, to do that, I have to use Javascript to manage this properly, but I haven't found a way to integrate Javascript with X3D. Does someone know some way to do that?
Previously, I though in loading the dxf file, get the data I need, and save this as a X3D file, like writing the XML.
thanks in advance
X3D supports JavaScript natively in the Script node (and it is sometimes referred to via the standardization name EcmaScript). Script events are connected to a scene via ROUTE statements. This provides a bridge between declarative 3D models and programmatic events/computation. Lots more online:
http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter09EventUtilitiesScripting
http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter30Scripts
http://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#Scripts
http://www.web3d.org/x3d/content/X3dTooltips.html#Script
http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/scripting.html#Script
In VRML you can integrate javascript using the Script node.
Here's an example:
DEF SCRIPT Script {
url ["javascript:
here goes your javascript code
"]
}
Considering that X3D started as the XML representation of VRML then I suppose there is support in X3D for the Script node.
Edit: Yes I can confirm the above.

Google App Engine PDF converter

I'm looking for a good, open source, PDF generator/library that will convert html (with styling etc.) into a PDF file.
Requirement:
Must be Java or Python and run on Google App Engine.
Must be Free, open-source.
Must be easy to use/consume.
Yes I have tried searching for this myself - I've tried many "solutions" that I've found on Google etc. None yet satisfy me. Many seem incomplete, buggy or don't work well on GAE. So I figured I would appeal to the StackOverflow community for opinions or suggestions.
For HTML/image to PDF I use the Python library http://www.xhtml2pdf.com/ which uses Pisa, Reportlab, pyPdf, and html5lib running on GAE. I have been using it to generate very nice article PDFs with embedded images and once I figured out how to get the page size correct I have found this to be a very good library.
You will need the xhtml2pdf library and it's dependencies:
https://github.com/chrisglass/xhtml2pdf
I threw together some example Python code and put it in this pastebin:
http://pastebin.com/FFEZjNs3
The pdf_data you get at the end is the binary PDF file data. The html_data you give to pisa is really any string containing an HTML document.
There are some recommended things to include in your HTML to get a well formatted PDF output. Here is an example HTML document similar to the base template I use. Note the author meta field and the #page CSS:
http://pastebin.com/q1wRm9nJ
Here are the docs about the compatible CSS and HTML:
https://github.com/chrisglass/xhtml2pdf/blob/master/doc/usage.rst#supported-css-properties
You can include images using either the URL of the external image or you can use a dataUri and xhtml2pdf has a function for creating these "pisa.makeDataURI()".
Hopefully that helps.

WPF to XPS to PDF

I have implemented a report in standard WPF controls and have also implemented a DocumentPaginator to take these controls and convert them into a document for printing.
I have also implemented some code which uses the document paginator to render the pages to images and write them out to a PDF using PDFSharp, however this does not allow for copying and pasting, also the image quality is questionable.
I have experimented with the GhostXPS utility and was thinking of using it by saving out to an XPS document and then using GhostXPS to convert it to a PDF, this was promising, however the current version contains a bug that renders data copied from the generated PDF useless...
So I thought I would ask here to try and find a efficient method for doing this, Can someone please suggest a good way to take a DocumentPaginator and either save it directly out to a PDF, with copy/paste functionality or convert it from an XPS document to a PDF with this functionality?
Thanks,
Alex.
EDIT - PDFSharp fix:
Ok as requested here is what I did to compile the fix for the PDFSharp 1.31 XPS converter:
1) I downloaded the source from here:
PDFSharp - SourceForge
2) I followed the instruction in this post:
PSFSharp Fix
XpsParser.ImageBrush.cs (ln 22, added): brush.Opacity = 1;
PdfContentWriter.cs (ln 526, changed): if (opacity <= 1)
3) Then just compile the source, first open the 'PdfSharp-WPF.csproj' and build that, then open the 'PdfSharp.Xps.csproj' and build it as well, the relevent libraries are 'PdfSharp-WPF.dll' and 'PdfSharp.Xps.dll'
Note upon trying to build the source you will likely receive a few errors depending on which version of .NET you are targeting, these are simple to fix if you just read the error messages.
EDIT(2): NJones created a blog post with more details on the PdfSharp fix: Output to PDF in WPF
There is an XPS Converter that was included with PDFsharp 1.31. It's a beta version, but AFAIK it supports nearly everything and may work for your needs.
PDFsharp 1.31 can be downloaded from SourceForge or CodePlex.
If a commercial SDK would be an option, there is one company I came across that has a professional XPS to PDF conversion option (and more).
http://www.nixps.com
Warning: I'm not affiliated with this company nor have I tried their products. I have on the other hand heard good things about them.
I use Telerik Reporting which handles document pagination and allows you to create reports in a designer similar to creating a GUI. I decided to just buy a 3rd party product because I didn't want to spend development time writing my own paginator, etc. Also, this tool is probably more bug proof then a custom solution and allows a lot of flexibility for how you want to design your printout/report. In the future if you have more complicated printing or reports required, this tool does a lot more. I do not work for Telerik, but there product is good.
It allows exporting to PDF, Word, Excel, HTML, PowerPoint, PNG, etc. etc.
IMHO, you've got the right idea: XPS is, in my mind, the simplest method of serializing the data into a usable format, especially for conversion.
As for a third party tool, I've a peer (as in, not myself,)who's used CheckPrixa with some measure of success; it's freeware and it offers command line conversions. (i.e. serializing a document and converting a la generated .bat file.)
It also allows you to handle keywords, titles, etc. along with more important items like even pagination.
As far as I'm aware, there are no known discrepancies.
Alternatively, if converting the MSXPS is what's giving you headaches, you might want to look at XpsConverter, it converts MSXPS to OpenXPS, and as a Window's driver, it's available on any machine using .NET 3 and above.
Keep us updated with whatever solution you try, virtual reports are a growing deal.

Best way to store data in wpf app

I just want to know about the best way to store simple data in wfp application. I'm using SQL CE, but sometimes I need to store simple data (for instance one string). I don't want to use for it db, and I think it's the right decision.
Could you please give me a guidance on how should I do that in best way or any useful resource?
Is there any particular features data settings storage for pattern MVVM?
Thank You.
Use Settings for exactly this scenario. It's simple, allows per user and system wide scenarios and is build into Visual Studio nicely.
Double clicking on Settings.settings in the Properties folder of your project (in Solution Explorer) brings up the editor and you can access these in code with something simple like Properties.Settings.Default.StringPropertyX.
http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx
if you're going to be upgrading in the future, I suggest that you create a small abstraction layer that you can upgrade to using any DB or other source, when you need to.
Until you do the upgrade, I would suggest a simple XML file using XDocument and XElement (and the rest of that api).
The reason why I am suggesting this is because you can use Linq on them easily and this enables you to change the provider in the future without any problems.
here is the MSDN on XDocument http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx .
I hope this proves to be helpful to you ;-)
Cheers,
Max
p.s. lemme know if this is what you needed or not!
If you publish the application through ClickOnce then you can use IsolatedStorage. It is pretty easy to use, just a few lines of code. You can learn how to use it on WPF isolated storage.
If you don't publish it through ClickOnce then I would suggest you keep it simple and use static class.
you can use file system.. try to create xml file or csv file in the wpf app directory...
you can read and write to same file.. so that you can save what ever you want to that file and read from the same file..

DB objects relations visualization

I'm not guru in DBA, so I'll try explain what I want in terms I imagine it.
I have Oracle DB with network devices. each device has ports which has parent device/port
I want some tool which will automaticaly create visual map of this device relations.
Will create "Network Map" based on this relations.
It's would be better if this tool will have some output ready for web publishing, or web based tool from the begging. Also if it will automatically update "picture" as soon as I add new relation/object
From far it looks something like Gource http://youtu.be/E5xPMW5fg48
But not exactly what i need
Hope to get some suggestion.
Thanks in advance!
UPD: found another tool: Gephi
You could try graphviz. It was created specifically for visualising large graphs of network nodes.
It's not out of the box; you'll have to write some code that:
Reads data on the devices & their relationships
Creates the graphviz input file
generates the diagram by calling the graphviz binary.
There are many ways to do that. One of the easiest is to use python with the pydot library.
Note that graphviz generates static images (jpeg / tiff etc.) so you'd have to regenerate on demand.
There are more interactive toolkits available, e.g. protovis / infovis. Both are javascript based and render directly in the browser.
hth.

Resources