2017-09-01 1 views
0

Étant donné un fichier PDF signé numériquement avec une signature, je voudrais imprimer ce document sur papier. En utilisant PDFBox avec le code suivant je suis capable d'imprimer le document, sauf que la signature ne finit pas sur les feuilles minces et blanchies de l'arbre mort. Le positionnement du texte autour ne change pas. Donc, il semble être conscient qu'il devrait y avoir quelque chose, mais il n'est pas imprimé.PDFBox ne pas imprimer la signature sur javax.print api

import java.awt.print.PrinterJob; 
    import javax.print.PrintService; 
    import javax.print.attribute.HashPrintRequestAttributeSet; 
    import org.apache.pdfbox.pdmodel.PDDocument; 
    import org.apache.pdfbox.printing.PDFPageable; 

    InputStream pdf = getPDFInputStreamSomeHow(); 
    PDDocument pdDocument = PDDocument.load(pdf); 
    PDFPageable pageable = new PDFPageable(pdDocument); 

    PrinterJob job = PrinterJob.getPrinterJob(); 
    job.setPrintService(service); 
    job.setPageable(pageable); 
    job.print(attrs); 

Il semble que PDFBox ne fait soutenir ce genre de signature, parce que quand j'utilise org.apache.pdfbox.rendering.PDFRenderer pour rendre la page à un BufferedImage, la signature est rendue comme il est dans mon lecteur PDF régulier (Acrobat ou Evince) .

Comment puis-je obtenir PDFBox pour rendre la signature correctement lors de l'impression? Je préfère ne pas embêter avec l'impression de BufferedImage car il diviserait le document en plusieurs travaux d'impression et me rendrait responsable de la qualité de l'image rendue envoyée à l'imprimante.

+0

Quelle version de PDFBox utilisez-vous et quel système d'exploitation utilisez-vous et pouvez-vous partager le fichier PDF? Certains problèmes d'impression sont résolus en utilisant le constructeur PDFPageable à 4 paramètres, avec le dernier paramètre défini à votre dpi souhaité, par ex. 300 (oui, cela vous rend responsable de la qualité de l'image rendue envoyée à l'imprimante). D'autres problèmes d'impression peuvent disparaître en désactivant ou sur l'impression avancée dans la boîte de dialogue "étendue". (Ne pas avoir les mots exacts, il y a un problème JIRA, mais JIRA est en panne) –

+0

Voici le problème https://issues.apache.org/jira/browse/PDFBOX-3729, cela peut être ou ne pas être la cause. –

+0

Je ne peux pas partager ce fichier PDF car il contient des informations confidentielles et en générer un nouveau sans aucun problème. Mais ce n'est pas un problème car votre suggestion a fonctionné! Veuillez poster en utilisant le constructeur 4-arg comme réponse et je l'accepterai. – Joost

Répondre

1

Une solution à votre problème est d'utiliser le constructeur 4 paramètres de PDFPageable avec une valeur non-0:

public PDFPageable(PDDocument document, Orientation orientation, boolean showPageBorder, float dpi) 

réglage du 4ème paramètre à un nombre utile comme 300 résultats dans l'être d'image tramage au DPI donné. Donc, pour vous, l'appel serait

PDFPageable pageable = new PDFPageable(pdDocument, Orientation.AUTO, false, 300); 

Une cause possible des problèmes d'impression sont suivis en cause PDFBOX-3729. Ce problème a également une autre solution de contournement pour les utilisateurs Windows.