2009-07-14 6 views
1

Je souhaite créer une application pour valider un fichier PDF. La validation requise est de vérifier que tout le texte et les images dans le PDF doivent commencer après 0,5 "marge de gauche et 0,5" marge de la droite. Si l'un des textes sort de cette marge, alors l'application devrait être capable de l'attraper.Position du texte PDF, marge gauche de la page

J'ai essayé de rechercher ceci dans iText mais n'ai pu obtenir quelque chose utile qui peut résoudre mon but. Est-ce que quelqu'un peut m'aider à écrire ce code dans .net csharp?

Merci, Praveen

Répondre

0

utilisation SetMarginMirroring(true)

+0

Pourriez-vous s'il vous plaît expliquer votre réponse. Je ne crée pas le PDF, je dois lire le fichier PDF, puis vérifier si le texte de l'image dépasse la marge spécifiée. – user423574

0

La norme PDF n'a pas vraiment le concept des marges, puisqu'un PDF est censé être indépendant du périphérique. Ce qu'il peut avoir, c'est cinq boîtes conçues pour contraindre la sortie: boîte de média, boîte de recadrage, boîte de fond perdu, boîte d'art et boîte de garniture. Habituellement, les quatre autres boîtes sont de la même taille ou plus petit que la boîte de médias.

Si un mediabox est présent dans votre fichier PDF, vous pouvez le récupérer et vérifier qu'il est 0.5 "plus petit de chaque côté que la page. Essayez de comparer les résultats de reader.getPageSize (pageNumber) et reader.getBoxSize (pageNumber, « médias »). Très probablement, ils seront les mêmes.

Qu'est-ce que vous pouvez faire est de réécrire les pdfs pour vous assurer qu'il ya 1/2 marges de pouce. la meilleure façon de c'est réduire la page.

+0

J'ai essayé d'utiliser reader.getBodSize et reader.getPageSize. Les deux fonctions ont retourné la taille de la page comme 8.5x11. Mais comment puis-je obtenir l'information d'où mon texte commence à l'intérieur de la boîte de médias. Je veux vérifier progamatically si n'importe quelle page contient n'importe quelle ligne qui commence avant la marge de 0.5 "de la gauche Je ne veux pas réécrire le pdf Est-ce que mediabox sur chaque page pourrait avoir Ce que j'ai compris, c'est que n'importe quel texte peut être contenu dans l'une des 5 cases et si je reçois la position de départ de la boîte, alors ça peut marcher – user423574

+0

Cela signifie probablement que la boîte n'est pas positionnée. Tout ce qui peut être dans un pdf est facultatif, donc sans savoir comment un pdf particulier a été construit, il serait très difficile de détecter des marges sans le rendre. –

1

En plus de la réponse de R Ubben: reader.getPageSize(pageNumber) est exactement le même que reader.getBoxSize(pageNumber,"media")

Ce ho. w il est implémenté dans iTextSharp. Vous pouvez le voir dans source code.

Extrait:

public Rectangle GetPageSize(PdfDictionary page) { 
    PdfArray mediaBox = page.GetAsArray(PdfName.MEDIABOX); 
    return GetNormalizedRectangle(mediaBox); 
} 
Questions connexes