[PDF/C#] Printen van PDF documenten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Creegfire
  • Registratie: Februari 2005
  • Laatst online: 18-09-2024
Ontwikkelomgeving:
Visual Studio 2008
.NET 3.5

Programma:
Met het programma dat ik momenteel aan het ontwikkelen ben wil ik bereiken dat wanneer een eindgebruiker een printopdracht maakt van een PDF document dat de printerinstellingen opgeslagen kunnen worden, zodat deze weer (bijvoorbeeld) een jaar later hergebruikt kunnen worden. Het programma moet dan deze printerinstellingen laden en het PDF document afdrukken.

Opzet
Het programma zoekt voorgeselecteerde locaties af naar PDF documenten die in een lijst worden weergegeven. Op het moment dat de eindgebruiker een PDF document selecteert en op afdrukken drukt dat er gecontroleerd wordt of er al oude printerinstellingen zijn. Als deze er niet zijn zal een nieuw scherm opkomen waarin de eindgebruiker printer specifieke instellingen kan maken. De eindgebruiker drukt op opslaan en deze printerinstellingen worden dan opgeslagen in een XML document dat bij het PDF document wordt geplaatst (Dit kan nog in de toekomst veranderen, dit is de eerste opzet). Hierdoor hoeft de eindgebruiker geen geschiedenis meer raad te plegen welke printerinstellingen gebruikt zijn bijvoorbeeld een jaar geleden en gebeurd alles automatisch.

Realisatie:
Het programma is al zodanig gerealiseerd dat het printerinstellingen kan opslaan en kan uitlezen uit een XML document. Het programma kan ook al op voorgeselecteerde locaties PDF documenten laden zodat de eindgebruiker hieruit kan kiezen. Alleen één onderdeel is nog niet gerealiseerd en dat is het printen van de PDF documenten.

Oplossingen:
Over dit probleem heb ik een tweetal oplossingen proberen te onderzoeken:
1. Ga ik dit document printen via Adobe Acrobat of Adobe Reader waarbij ik specifieke printerinstellingen mee kan geven?
2. Ga ik dit document zelf afdrukken zonder een inteferentie van een ander programma met de specifieke printerinstellingen?

Voor de eerste oplossingen zijn een aantal opensource (ik zoek geen betaalde oplossingen) libraries die dit mogelijk maken. Deze libraries zijn: PDFSharp & iTextSharp. In beide gevallen zit een mogelijkheid tot printen waarbij PDFSharp via Adobe Acrobat of via Adobe Reader doet uit printen maar geen printerinstellingen mee kan geven en bij iTextSharp kan een javascript command opgebouwd worden waarin (het schijnt) printerinstellingen meegegeven kunnen worden maar dit krijg ik niet gerealiseerd.

PDFSharp voorbeeld: http://www.pdfsharp.net/wiki/PrintPdfFile-sample.ashx
iTextSharp voorbeeld: http://itextsharp.sourceforge.net/tutorial/ch11.html

Andere opensource libraries hebben niet de mogelijkheid tot het printen met specifieke printerinstellingen.

De tweede oplossing heb ik nog geen specifieke onderzoek naar gedaan maar ik wil dit als laatste optie gebruiken. Om de kwaliteit van de PDF documenten te handhaven wil ik via Adobe Acrobat of via Adobe Reader uitprinten. Hierover zijn wel ontelbare mogelijkheden te vinden. Dit is dan ook niet mijn vraag.

Vraag:
Mijn vraag aan jullie is of iemand mij kan helpen een oplossing te vinden zodat ik via Adobe Acrobat of Adobe Reader met printer specifieke instellingen kan printen (PDF Documenten)?

Alvast bedankt en ik hoop dat ik voldoende informatie heb gegeven. Mochten er nog onduidelijkheden zijn probeer ik zo snel mogelijk helder te maken.

//Creegfire


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Aangezien je het via iTextSharp al hebt geprobeerd: wat ging daar precies mis? Heb je wat code? Wat was het uiteindelijke resultaat?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Creegfire
  • Registratie: Februari 2005
  • Laatst online: 18-09-2024
De code die ik via iTextSharp heb geprobeerd deed niets uitvoeren en ik was ook niet er zeker van of ik het wel goed had gedaan. De code ziet er als volgt uit:

C#:
1
2
3
4
iTextSharp.text.Document document = new iTextSharp.text.Document();
iTextSharp.text.pdf.PdfWriter writer = iTextSharp.text.pdf.PdfWriter.GetInstance(document, new FileStream(@"C:\test\test.pdf", FileMode.Open));
iTextSharp.text.pdf.PdfAction action = iTextSharp.text.pdf.PdfAction.JavaScript("this.print(true);\r", writer);
writer.AddJavaScript(action);


Dit was de code om te testen of ik uberhaupt kon printen waarbij ik dus geen printerspecifieke instellingen heb gedaan.

[ Voor 9% gewijzigd door Creegfire op 21-01-2010 12:47 ]

//Creegfire


Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
Als je kijkt naar optie 2, je kan PDF omzetten naar een PostScript file. Sommige printers kunnen PS files direct printen (of met een PS-driver), is dat wellicht een optie om te overwegen? Direct printen vanuit je applicatie lijkt me netter dan eerst Acrobat Reader opstarten.

Let er wel op dat je er nieuwere PDF standaarden in de toekoemst kunnen komen. Maar als je de bron van de PDF's ook onder controle hebt hoeft dat geen probleem te zijn.

Nadeel van gratis tooltjes is dat de support/updates kunnen stoppen of er niet zijn.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • Ruben314
  • Registratie: Juli 2001
  • Laatst online: 08-07 19:44
Nadeel van gratis tooltjes is dat de support/updates kunnen stoppen of er niet zijn.
Uit ervaring kan dat (helaas) met betaalde producten ook gebeuren... Waarna je nog dieper in de shit zit als er bug in zitten.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
PDF naar PostScript omzetten lijkt me niet ideaal. PDF ís al een soort compacte variant op PostScript en in PostScript kun je net zo min printerspecifieke instellingen kwijt als in PDF. Verder kent PostScript een aantal limitaties zoals gebrek aan ondersteuning voor transparantie die PDF niet kent. Ik denk dus dat je met het gebruik van PostScript weinig te winnen hebt.

Los hiervan zie ik het nut niet echt van de opdracht. PDF is juist al een device independent formaat waarmee je documenten redelijk nauwkeurig kunt reproduceren. De overgebleven printerinstellingen moet de gebruiker instellen omdat die variëren tussen printers en printerdrivers en de omstandigheden.

Wat heb ik er aan dat opgeslagen wordt dat ik een of ander PDFje vorig jaar heb enkelzijdig heb uitgeprint op papier uit lade B, als ik een jaar verder een hele andere printer heb staan die misschien maar één papierlade maar wel een duplexing unit heeft?

Acties:
  • 0 Henk 'm!

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 10-09 11:15
De grotere printers kunnen het ook aan wanneer je rechstreeks een PDF naar de printershare kopiëert. Maar als je bijvoorbeeld bakaansturing wilt doen kom je volgens mij al snel bij betaalde libraries uit. Een halfjaar terug kreeg ik het in ieder geval niet voor elkaar om (zonder Adobe Reader) met bijvoorbeeld iTextSharp te printen.

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik heb iets dergelijks zelf ook aan de hand gehad (jaar of meer geleden). Conclusie was: PDF printen vanuit C# is ruk. Of duur :P

Uiteindelijk heb ik iets gedaan met een File.Copy(@"\\server\printer_share_bak2") gedaan door raw de PS (of was het PDF) er gewoon naar toe te dumpen. Clue was dat de printer PS (of PDF) moet ondersteunen en dat je elke bak als aparte share moet aanmaken/mounten (en dan in de voorkeursinstellingen de bak vast zetten).

Ik weet niet meer 100% hoe het zat, maar zoiets was het.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Creegfire
  • Registratie: Februari 2005
  • Laatst online: 18-09-2024
Na enig onderzoek heb ik uiteindelijk een oplossing gevonden die ook precies werkt hoe ik het wil. Alle kwaliteiten van de PDF worden ook hierin meegenomen. De oplossing is het gebruik maken van de Javascript Interapplication Communication (IAC) van Adobe wat standaard in Adobe Acrobat / Reader zit (OLE communicatie).

[ Voor 0% gewijzigd door Creegfire op 22-01-2010 12:21 . Reden: Typos... ]

//Creegfire

Pagina: 1