Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed last month.
Improve this question
I used LaTeX for writing couple of white papers while I was in grad school. From that I have a really good impression about it in terms of what LaTeX allows user to do, especially the fine control it provides over formatting, etc.
Now I am debating whether I should actually use LaTeX for our production apps to generate PDFs. I have tried several commercial and free PDF libraries (PDFSharp/MigraDoc, iTextSharp, Expert PDF, etc) and none of them provide the amount of fine control I need without making the code base extremely difficult to maintain in long run.
If I do decide to go this route it will be done from C#. Since LaTeX already has command line interface, I should be able to do that pretty easily from C# as an external process forked from my program.
But I was looking for some comments from the community.
Has anyone tried it? If so, what were some gotchas?
What do you think about the idea -- pros and cons (I am more interested in gotachas)?
All feedback is welcome.
I have previously built a platform for report generation that uses plain TeX (specifically the MiKTeX implementation) to generate reports in PDF format. The platform is used to generate approximately fifty reports per month of varying nature (containing mostly dynamically generated tables and charts). The system is quite flexible. Reports are defined via XML (on an internally-defined report description schema). The platform allows the user to specify a source database table, which fields to extract, the formatting of the fields, a mini query language to filter the appropriate data as well as various formatting elements (page orientation, size, titles, and classifications ("Public", "Internal", "Confidential", etc.).
The main "gotcha" is that it takes a ton of work to end up with a code base that is flexible to change and not a total pain to maintain. A second "gotcha" is that knowledge of TeX (outside of academics) is rare so you could end up becoming the de facto maintainer even if that is not part of your usual role.
Pros:
Beautifully formatted reports.
Complete control over layout and look.
Free.
Cons:
Difficult to implement properly.
Difficult to maintain.
Knowledge transition could be burdensome.
Support is effectively non-existant.
I've done a few in-house "production level" documents in LaTeX.
Generating LaTeX documents in Windows is an overall horrible experience, to be honest. I was never able to find any solution besides Cygwin. Once you've got the Cygwin environment up and running, it was as simple as picking out the LaTeX and related libraries from Cygwin's setup.exe.
I haven't tried running LaTeX from a non-Cygwin environment, but in theory you should be able to just run C:\Cygwin\usr\bin\latex.exe -- then there's a chance it will be missing paths since you're not in Bash, in which case you might need to just pass the include directories to subsequent programs.
If you decide to use Docbook instead of LaTeX for your documentation (and I would recommend at least giving it a look, it's much more structured for software-related technical documentaion), I had good experience running dblatex under Cygwin. It's not in the Cygwin repositories, but it's a piece of cake to install from source.
I have done various production PDF implementations using TeX. I ended up abandoning LaTeX, and went with ConTeXt (see also Context Garden).
There is a very active mailing list, it is used extensively for document production, and there is a nice minimal distribution for various Unixes, Windows and Mac OS X. There is no need for Cygwin on Windows (although you do need Ruby).
I find ConTeXt approach to TeX cleaner than LaTeX, but that might just be me.
If you need to publish data summaries and graph, then you can have a look at Sweave. Sweave allows to mix all the functionality of R with TeX. The source code of a report consist of a plain TeX file with some R-code chunk were you need to read, manipulate, tabulate or plot data. Then you 'compile' the Sweave file (from the commandline) which returns a plain TeX file.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 months ago.
Improve this question
Which is the best 3rd party library to use for exporting data and generating charts in the Excel from Asp.net. I have researched on .Net and found the following:
1. EPPlus: Since we are to work in a very tight schedule and the project is also not too long, so we will not be having much time to resolve issues if we get stuck somewhere after using the component. Since that is an open source library, so the time guarantee to get a help to get the issue resolved cannot be there.
2. Spreadsheetgear2012: This seems to be a good library and its site seems to show a good amount of charting examples.
3. Aspose.Cells: This also seems to be a good library and its site seems to show good charting examples although its a bit pricey, but their support seems really good and they seem very open to new ideas from clients to implement in their product and release a new version.
We are not able to take a final call whether to go for Spreadsheetgear2012 for .Net or Aspose.Cells. Any details and ideas will be highly appreciated.
The comparisons that I was able to find on internet for these products were pretty old (around 4 years back).
Our main application is online interaction and reporting from a spreadhseet, rather than generation and downloading of other spreadsheet files. We tried quite a few spreadsheet deployment options and in the end went with Spreadsheetgear. We found it to be very simple to set up, fast and flexible for this purpose. Their online examples and support are also very good.
We have moved on from their examples and have been able to set up their API with an MVC3 ASP.NET framework. It is quite a task to get it working but in the end MVC makes for a very neat code structure and much faster deployment of applications. The combination is highly recommended.
What is the most important to you? Cost, long term plan or support?
The first one is free so if cost is your biggest constraint, you really don't have options.
The second one is cheaper than your last one but it seems to have a smaller user community.
So if you run into trouble, where do you find help?
The third one provides a full series of other related products too. If you think you may need other products later, then you can bundle your existing license and that can save you money.
I am using the third one at work and think it's a good product. They have large user community and their support is responsive. But it does come with a hearty cost.
You are missing another player in this space that, while not as spiffy or as speedy to plug-and-play as the paid options, could perhaps be enough to get you where you need to go with your spreadsheets: NPOI. Even if you don't use it for your current project, it still could be worth looking into as a tool to use at a later point.
CodePlex
http://npoi.codeplex.com/
Scott Mitchell on NPOI
http://scottonwriting.net/sowblog/archive/2011/06/08/export-an-ado-net-datatable-to-excel-using-npoi.aspx
Leniel Macaferi on NPOI
http://www.leniel.net/2009/10/npoi-with-excel-table-and-dynamic-chart.html#sthash.VZ4NjvZK.dpbs
Zach Hunter on NPOI
http://www.zachhunter.com/2010/06/improved-npoi-exportdatatabletoexcel-function/
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I have an Excel application with one entry page and one result page. Based on the data entered into the entry page and some static tables present, there are some other worksheets which calculate the values and sum it up later in the results page.
I need to convert this application to a web application and move the whole logic from excel to C#. There will be some UI pages and 1 results page, and the worksheet calculations currently in the excel application will be moved to different C# classes.
Is there any tool for this, or do we have to manually convert every piece of the existing logic to C#? If we have to do it manually, then is there any tool which can help summarize the logic in a text file, so that we don't have to backtrack the whole calculation in Excel to reconstruct the logic?
I doubt a tool could help you do this, and if that tool existed I would expect the resulting C# code to be pretty bad. One of the forces of Excel is that it permits a very flexible programming style; the downside is that the resulting code has very little structure to it, which makes it hard to follow, both for humans and machines. On top of that, the logic can take multiple forms, from an Excel formula to a VBA macro, which complicates matters.
By contrast, C# tends to see the world in terms of classes, which have very specific responsibilities; a program essentially coordinates passing messages between classes so that they can "talk to each other" and collaborate to get the job done.
In that context, at best, I would expect a translation tool to produce a few unpleasant C# procedures. In the end, a spreadsheet (with no VBA) is a set of functions sitting in cells and chained together, there isn't enough structure present to extract meaningful classes/entities that own pieces of functionality.
Furthermore, I would argue that re-thinking this application is an opportunity. A web app can do easily things Excel can't, and vice-versa. Instead of a "word-for-word" close translation, I would focus on retaining the spirit of the application, but design it without thinking too much about the original Excel application.
The benefit of having the Excel application present is that you have a proof of concept already. Instead of trying to convert the code, I would simply track down all the input points that have an influence on other calculated fields (maybe using auditing), list / diagram what influences what (maybe with a simple bubbles- and-arrows diagrams), and attempt to describe in plain English what the user is attempting to do, and what is happening in terms of "entities". For instance, rather than =A2*(1-A3), I would say "the Product Net Cost is its Cost time (1 - Discount Rate)". And instead of =SUM(A5:A32), I would say "the User wants a summary of the cost of the Products he ordered, which should display the Total Cost of his Order, so that he can have an overview of his order". If you manage to extract a description of your domain with good names and use cases, this will be more helpful to a developer to write the best possible application supporting these requirements, on any platform you may want.
I wouldn't try to "convert" the solution. Build it in C# from scratch. They are written in different languages and the UI cannot be reused.
I agree with fabiopagoti. Even if a magical 'converter' would be available, what human would dare to maintain this coded-by-machine application in future updates?
Taking your second question, looking for an alternative helper, I've found the [CTRL]+[`] key combination that may give you a hand on this: This shortcut displays all formulas in cells, so you can be more confortable you're not missing anything behind. I hope.
PS: To text file? Just apply the shortcut and "print" the sheet to a PDF file.
May be you can use Google Docs. It allow to create scripts and use formulas.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm working on a project which generates (composite) Microsoft Word documents which are comprised of one or more child documents. There are tens of thousands of permutations of the composite documents. Far too many for users to easily manage. Users will need to view/edit the child documents through the app which hides all of the nasty implementation details. A requirement of the system is that the child documents must be version controlled. That is what has been tripping me up.
I've been torn between using an off-the-shelf solution or rolling my own. At a minimum, the system needs to support get latest, get specific version, add new, rename and possibly delete. I’ve whiteboarded it enough to realize it won’t be a trivial task to create my own. As far as commercial systems I have VSS and TFS at my disposal. I've played with the TFS API some, but it isn’t as intuitive or well documented as I had hoped. I'm not averse to an open source solution (e.g. SVN), but I have less familiarity with them.
Which approach or tool would you recommend? Why? Do you have any links to API documentation you would recommend?
Environment: C#, VS2008, SQL Server 2005/2008, low volume (a few hundred operations per day)
SharePoint does a pretty good job of document management, with versioning, etc. It also has plenty of APIs and is a much more modern approach than using the COM layer for VSS. SP would be a good solution if you are writing this as an enterprise solution (dedicated server, etc), but not so good for a desktop or small-business/SOHO app.
Its actually pretty easy to get rolling with document versioning in Sharepoint. If you setup a new list you will be able to define version options for attachments and list items right in the SP list settings.
You can also get a much more detailed control over versioning by using the SP webservices. If your planning on doing all of your document access from within your application, and don't want to have to push users into the Sharepoint site I would use this approach. Here is a good tutorial to get started with SP versioning
Give a try to Plastic SCM. It's distributed, has a great GUI, it can work as centralized too and you'll find tons of .NET assemblies to hook your code.
alt text http://www.codicesoftware.com/images3mk/screenshots/visualize_4.JPG
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I've a requirement to be able to generate PDF's within our (ASP.net) application. We need to meet the following requirements:
The text will be largely dynamic and must be added programatically.
Ideally we'd like to base these generated documents off PDF templates provided by our designers.
Some of the sections/pages may or may not be visible depending on certain conditions - ideally we'd like the content to 'flow' upwards to fill the space when something is removed.
Some of the pages may need to repeat, depending on certain conditions.
Some of the PDF templates will be out of our control (we're populating application forms supplied by third parties), so being able to read in a blank PDF and populate it would be good.
I've looked at iTextSharp and it seems to do most of these things (i.e. I can take a PDF, edit it to include form fields where we need to fill data and then use iTextSharp to read that in as a template and populate the data), however, I'm not sure how then to go about potentially hiding whole sections and/or repeating pages.
What I'm looking for here is a little advice from anybody who's been in a similar situation.
Small update here, we went with iTextSharp - it's a powerful tool, but does take a bit of learning, however it's quick, light, and does precisely what we want it to do.
However...
I would point out that the latest version is no longer really free (as in beer) - the license does not permit commercial usage. As a result, we now have a licensed version, but it's not shockingly cheap (and they don't publish a price list).
I would use iTextSharp. I create all kinds of PDF files based on different templates and iText has worked the best for me. It is a very powerful control and can manipulate pdf files in just about any way.
I'm not sure that iText can handle your third requirement. I know that it can create a pdf from a html file. Maybe use what Tomas posted and create the pdf with iText.
There are various commercial components to do this. Look at: PDFLib (http://www.pdflib.com/), Tall Components (http://www.tallcomponents.com/) etc
I have use products from Tall components and can recommend them.
Some others are a lot more expensive.
ITextSharp as you've mentioned is quite good and can be used to add/remove external pages, in this can you could hide full pages by ommiting them, or replacing them with placeholder pages. iText can use existing PDF files or create blank pages.
From my personal experience, I have just dropped in images and text onto existing pages and added pages generated by a reporting tool when tabular data is required.
HTH
Why need the template files in the pdf format? With the dynamic that you want it is a bad format for reporting template. Use a reporting software that also output as pdf. Your designers can create the templates very easy with a GUI. You will find many reporting solutions here on stackoverflow.
We've used http://www.dynamicpdf.com/, for projects like this and have been pleased with the outcome. They have a PDF WYSIWYG designer tool that you can use to build out the layout template of your PDF, along with the tool to merge the template with your data based on field to column mapping. This saves hours of hand coding each element of a given PDF. It supports page headers and footers and deals with the complexities of page breaks.
I would consider using creating HTML files from templates and turn them into PDF with Prince. Prince is very flexible and crating HTML files from templates is much easier then creating PDF files directly.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Last week i searched for good free or opensource solutions and component for GIS (Geographical Information Systems) I founded some system but no one fill my requirements
SharpMap is very buggy software
Gmap.net is very slow
MapWindow have a very complex structure and is very buggy.
I founded uDIG but is in java, i need a solution in vb.net or c#.
Anyone know a good solution that fill my requirements or have alternatives, i accept solutions?
You are limiting yourself a lot by insisting on .NET. I don't know of anything other than SharpMap or MapWinGIS ActiveX (MapWindow). Here are some free, but not .NET, options for Windows desktop applications.
If you'd consider writing your standalone application in Python or C++:
Mapnik
QGIS
Or if you'd consider writing a plug-in or a customisation for an existing GIS:
GRASS can be customised in Python, Perl, Ruby...
QGIS can be customised in Python
I think that you've covered it already. There really aren't any production quality open source GIS project out there using C#. Most of the good work is being done in Java, C/C++ or Python these days. If you must use the .NET Framework then I think the best of the bunch is indeed SharpMap.
Failing that you need to look at commercial products from companies like http://www.esri.com. Of course, it also depends on what you need: web services, Windows Forms control, WPF, etc. In the past I've managed to whip up some C# that constructed the right XML to send to a Java server-based mapping engine, so you could look at something like GeoServer and build your own client. Obviously not what you want to get in to but I don't see that you have many options beyond the ones you've listed.
I would recommend to look in to MapAround
Have you checked out SharpMap? It's available on codeplex.
MapSurfer.NET framework might be a good option.
MapSurfer.NET is free, modern cartographic framework which is able to provide maps of superior cartographic quality. This framework supports a bunch spatial data formats (e.g., Shape files, PostgreSQL, OSM, etc.) and web services (e.g., CartoDB, Mapzen, etc.). Furthermore, its setup includes MapSurfer.NET Studio application which allows creating and editing map styles (analogue of TileMill). Its symbology is inspired by both OGC specifications and other similar toolkits such as MapServer, GeoServer or Mapnik.
We use Mapzania (http://www.mapzania.com).
The best thing about it is that you load it into existing web-applications via a NuGet package and then you get a bunch of GIS functionality.
It uses Leaflet as its front-end and it has JS library that makes it easy to do stuff to Leaflet.
It also has a nice MapStyler for creating and editing maps.