I want to make a C# program which will save bookmarks for pdf and djvu files.
How can I find out the current page number from the AcroRd32/DjVuReader process?
You may be able to do it via a the DDE protocol which is supported by Adobe Acrobat. Check the DDE Spec (Adobe Inter Proces Communication Support Paper) for Acrobat.
Now, if you are not familiar with DDE, let me give you a brief overview - it is a Microsoft (Windows) based IPC protocol similar to named pipes (Windows), COM(OLE), WCF, MSMQ (for IPC), RPC, etc.. Actually MSMQ is probably in my opinion the closest.
Basically with DDE you connect to a DDE server (local machine that's running acrobat), and send messages/commands to it. The trick to it is that DDE is not natively supported by .NET (any version). To get around this issue, you can use the NDDE wrapper (written in Managed C++) on CodePlex
I have sucessfuly been able to force AcroRd32.exe to open file, print specific pages to a network printer... etc using this library (NDDE), which is why I would recommend it. It sure as hell beats paying for a Acrobat Development Toolkit license.... grrrrrr.
In either case, I hope this helps. You might be able to do it via OLE automation & COM but I have never tried it.
Thanks,
<bleepzter/>
PS. Please mark my question if it has helped you in your endeavors :) Thanks!
Related
Now I am working in the process of Insert and Update the comment for the pdf file using c# code. I want to Know the any possible way to insert a comment inside the pdf file. Anyone Know about this, Please reply and some reference for this process.
Microsoft does have very limited support for PDF in operating system APIs and it has come only recently in Windows 8 for modern applications (now called UWP) and that support doesn't go as far as updating comments.
So you need to use the 3rd party library. As far as I can tell SharpPDF is the only free library worth something, but I failed to open many PDFs in it so I can't recommend it. So I think you would need to search for some commercial library, I am aware of several of them that can do the job (e.g XfiniumPDF, iTextSharp etc) and you'll get the documentation when you license them.
My C# Windows application needs to print office documents silently(without popup dialog or open up applications such as Word, Excel ). So I'm trying to find a way to print office documents without office (Otherwise user needs to buy office package also to use my application).
I tried with Aspose.NET but It seems some parts of the documents(such as notes, comments) are getting ignored by this component.
I've also tried to go through Microsoft Office 2010: Primary Interop Assemblies Redistributable. But, as I found to use MS office PIAs, MS office needs to be install in the target computer.
Any ideas where should I look into?
First you should understand, that MSOffice uses a proprietary format, that event he best open-source office software is having problems reading without screwing something up.
My suggestion is - you either take something that does a minimal amount of damage, or require office. One suggestion would be: Microsoft used to make "word reader" and "excel reader", try to see if they are still being released.
Another idea would be to find a free office-to-pdf or office-to-xps conversion software, include it with your program and print.
The most difficult way, in my oppinion, would be to feed the document to some online service, for example skydrive's document reader, and request it to print the file.
Depending on the application, your best bet might be saving the content to Open XML and parsing it (beware there's a lot of bloat in larger documents saved in that format per my experience) or simply saving to PDF.
Another clunkier, but more standalone possibility is to use control.click and such to build an automated clicker that opens content in an external freeware application and prints it. The most compelling option is Microsoft's "Viewer" applications (when available). When that is unavailable for a particular document type, Microsoft suggests OneDrive as a freeware alternative (requires account, internet connection).
Word -- "Viewer" has been retired, look for legacy version or use OneDrive
Excel -- "Viewer" is available
Powerpoint -- "Viewer" is available
If you don't want to use a third party application, that could give you a creative, if clunky route to accomplishing your posted goal. Good luck!
from my understand, in order to write adobe plugin, we have to use c++ and the adobe sdk to write the adobe plug ins.
is that possible to use c#, link with adobe sdk to write adobe plug ins?
Yes you can! :)
It's a vast topic but you can begin with
http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/intro_to_sdk/DeveloperFAQ.pdf
Page 21
Maybe with Acrobat as sunil5715 mentioned.. BUT I had the SDK for Adobe Illustrator v4. Back then you had to use Motorola's IDE named Code Warriors. You wont be able to use C# if you expect it your plugin to run on a Mac.
Maybe if you wrote a version in Mono it might run on a mac, but that is obviously not ideal.
Couple of notes (for Illustrator atleast) the code is unmanaged C++ and mixing unmanaged with managed code isn't the best practice. Also when you see the SDKs for Illustrator, Photoshop, After Effects you will see how dam good their (Adobe's) code is. Its spectacular! EXTREMELY good quality and is much better than the production code in many Microsoft products. So unless its a simple plugin I think you will need the low level abilities of C++.
I've done some googling and there seems to be a plethora of tools for reading excel 2007 spreadsheets using c#. I'd like to know which one performs best and is easy to use.
Frankly, it depends on if you have Excel installed on the machine.
If you have Excel installed, using Microsofts Office APIs is as quick and ( for the price ) painless as you are going to get. That said, if you don't have Excel installed, the question gets much trickier.
Also, note, if you are installing to a web server that is available to the world, using Microsoft's Office APIs often isn't actually legal, as the end user needs to have an office license for you to be legal. If this is the case, and you are developing for redistribution or internet deployment, make sure that the library you are considering has no dependencies on the Office APIs, as their redistribution isn't actually legal either. If you need to, for example, provide a viewer for people that don't have Excel installed, you can't legally use the Office APIs, nor can you use 3rd Parties that depend on that layer. Compliant libraries will make it clear in their description that they don't depend on Excel.
It depends what you're trying to do with the spreadsheet.
If you want to read tabular data, OleDB is the best option.
If you want to read formatting or specific cells, you should use a third-party component. (I can't recommend a specific vendor)
You should avoid using Excel's COM object model unless you want to interact with an open window or print a spreadsheet.
I've had pretty good results with Koogra.
Check the Open XML SDK. It includes a "Productivity Tool" that lets you walk through the structure of a document to help write your code as well.
I looked into the Open XML Format SDK about a year ago and it seemed like a good alternative that does not require Office installed.
I have used GemBox and the Microsoft Office APIs to read in spreadsheets. I have had success with both options but I tend to like GemBox a bit more. It is fast and simple to implement but comes with a price tag.
I need to print to barcode printer (zebra) from windows-mobile 2005 (motorola hc700)
I search any sdk...not fount how to print.
thank's for any help
Check out the new mobile SDK from Zebra. It works with BlackBerry and Windows Mobile
ZebraLink Multiplatform SDK
This is based on my experience from 2006.
I had to use sockets in C# to send ZPL code to the printer. The "ZPL Code Generator" was hard-coded specifically to the one label format we needed; however, a template file with strategically placed search-and-replace strings would have been a better solution. There was a ZPL guide included with the printer and I'm sure you can get one from their website.
The Windows drivers were awful at the time and only produced garbage output. A couple developers before me had other approaches and both failed after a few weeks.
Edit:
Link to MSDN .Net Sockets. When
From my project, the port you should use is 6101. But that may be specific to the QL320.
The ZPL guides from Zebra are pretty good and I had little reason to devote the language to memory because it was just one small project.
Also, your printer may use EPL instead of ZPL but Zebra's guide for that is equally good. Either way, if the text you are sending to the printer is relatively constant, just create a file that correctly prints when streamed to the printer and then put in "replace me" blocks for your app to put in the dynamic values.
I'm also assuming that you are accessing this via a network. If your connecting it directly to the device, this changes slightly (I believe it gets mapped to COM port for most devices).
All that, and no mention of
http://www.zebra.com/id/zebra/na/en/index/products/software/label_design_software/label_vista.html
We developed our label code by creating the labels in label vista and using telnet to send them to the printer for printing. Repeat until you have it like you want, then code it.