04 juillet 2016
publié par 

La majeure partie des imprimantes disposent de marges physiques de quelques millimètres, et parfois de plus d'un centimètre. Par exemple si la marge gauche d'une imprimante est de 4 mm, physiquement les mécanismes d'entraînement de l'imprimante ne peuvent imprimer dans la zone de 0 à 4 mm du papier, même avec un appel de la fonction iMarge avec zéro pour la marge gauche, le début de l'impression sera à 4 mm du bord gauche.

 

Il est possible de se représenter les marges physiques d'une imprimante avec le code suivant :

 

iMarge(0,0,0,0)
iDestination(iPDFGénérique , "c:\temp\imp_marge.pdf")
iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu)
iImprimeZone("Le cadre tient compte de la marge physique de l'imprimante",0,10, iLargeurPage(), iHauteurPage(),iHaut+iCentreH)
iFinImprime ()
LanceAppliAssociée("c:\temp\imp_marge.pdf")

 

Le PDF obtenu aura un cadre rouge correspondant exactement aux marges physiques de l'imprimante configurée par défaut lors de l'exécution du code :

 

Lorsqu'une édition programmée est destinée uniquement à la production d'un document PDF, il peut être intéressant d'utiliser toute la surface des pages. Une astuce pour y parvenir consiste tout simplement à sélectionner avant l'édition l'imprimante système "Microsoft XPS Document Writer". En effet, ce pilote "virtuel" d'imprimante à l'avantage de n'avoir aucun marge, ni même de format imposé. On peut donc créer un document sans aucune marge, ou avec un format de papier qui ne serait pas accepté par une imprimante standard. Le code suivant identique au précédent, à l'exception du choix du pilote, permet de se représenter le résultat :

 

iConfigure("Microsoft XPS Document Writer")
iMarge(0,0,0,0)
iDestination(iPDF , "c:\temp\imp_sans_marge.pdf")
iCadre(0,0,iLargeurPage,iHauteurPage,1,0,RougeClair,iContinu)
iImprimeZone("Aucune marge le cadre est bien placé en 0x0 du document",0,10, iLargeurPage(), iHauteurPage(),iHaut+iCentreH)
iFinImprime ()

 

Le PDF obtenu a bien le cadre sur les bords du document :

 

Un cas pratique dans lequel ce pilote est utile : découper un PDF de N pages en N PDF d'une seule page. Sans utiliser ce pilote, le contenu des pages obtenues est décalé suivant les marges physiques de l'imprimante en cours. Exemple d'un code de découpage d'un PDF, conservant strictement la position des données du document PDF d'origine :

 

sFichierPDF est une chaîne = "<chemin>\PDF-N-PAGES.pdf"

sUnePagePDF est une chaîne MonImage est une Image

iConfigure("Microsoft XPS Document Writer")

iMarge(0,0,0,0)

iParamètrePDF("","",iQualitéMaximale)

POUR nPage = 1 _A_ PDFNombreDePages(sFichierPDF)

MonImage = PDFExtraitPage(sFichierPDF, nPage)

sUnePagePDF = fExtraitChemin(sFichierPDF,fDisque+fRépertoire+fFichier)+"-"+nPage+".pdf"

iDestination(iPDF,sUnePagePDF)

iImprimeImage(MonImage,0,0,iLargeurPage(),iHauteurPage(),iAffichageNormal)

iFinImprime()

FIN

 

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée