Formater des documents PDF en Python
Ce guide est utile lorsque vous devez contrôler le comportement du visualiseur PDF, l’intégration de polices, les paramètres d’affichage par défaut ou les préférences d’impression dans des documents générés en Python.
Mise en forme du document PDF
Obtenir les propriétés d’affichage de la fenêtre du document et de la page
Ce sujet vous aide à comprendre comment obtenir les propriétés de la fenêtre du document, de l’application de visualisation, et comment les pages sont affichées. Pour définir ces propriétés :
Ouvrez le fichier PDF en utilisant le Document classe. Maintenant, vous pouvez définir les propriétés de l’objet Document, telles que
- CenterWindow – Centrer la fenêtre du document à l’écran. Valeur par défaut : false.
- Direction – Ordre de lecture. Ceci détermine comment les pages sont disposées lorsqu’elles sont affichées côte à côte. Par défaut : de gauche à droite.
- DisplayDocTitle – Affiche le titre du document dans la barre de titre de la fenêtre du document. Valeur par défaut : false (le titre est affiché).
- HideMenuBar – Masquer ou afficher la barre de menu de la fenêtre du document. Par défaut : false (la barre de menu est affichée).
- HideToolBar – Masquer ou afficher la barre d’outils de la fenêtre du document. Par défaut : false (la barre d’outils est affichée).
- HideWindowUI – Masquer ou afficher les éléments de la fenêtre du document, comme les barres de défilement. Par défaut : false (les éléments d’interface sont affichés).
- NonFullScreenPageMode – Comment le document est affiché lorsqu’il n’est pas en mode plein écran.
- PageLayout – La mise en page.
- PageMode – Comment le document est affiché lors de la première ouverture. Les options sont afficher les vignettes, plein écran, afficher le panneau des pièces jointes.
Le fragment de code suivant vous montre comment obtenir les propriétés en utilisant Document classe.
import aspose.pdf as ap
def get_document_window(input_pdf, output_pdf):
"""Print document window metadata for inspection."""
document = ap.Document(input_pdf)
print("CenterWindow:", document.center_window)
print("Direction:", document.direction)
print("DisplayDocTitle:", document.display_doc_title)
print("FitWindow:", document.fit_window)
print("HideMenuBar:", document.hide_menubar)
print("HideToolBar:", document.hide_tool_bar)
print("HideWindowUI:", document.hide_window_ui)
print("NonFullScreenPageMode:", document.non_full_screen_page_mode)
print("PageLayout:", document.page_layout)
print("PageMode:", document.page_mode)
Définir les propriétés d’affichage de la fenêtre du Document et de la Page
Ce sujet explique comment définir les propriétés de la fenêtre du document, de l’application de visualisation et de l’affichage de la page. Pour définir ces différentes propriétés :
- Ouvrez le fichier PDF en utilisant le Document classe.
- Définissez les propriétés de l’objet Document.
- Enregistrez le fichier PDF mis à jour en utilisant la méthode save.
Propriétés disponibles :
- Centrer la fenêtre
- Direction
- AfficherDocTitre
- Ajuster à la fenêtre
- Masquer la barre de menus
- Masquer la barre d’outils
- MasquerInterfaceFenêtre
- ModePageNonPleinEcran
- Mise en page
- ModePage
Chacun est utilisé et décrit dans le code ci‑dessous. Le fragment de code suivant montre comment définir les propriétés en utilisant le Document classe.
import aspose.pdf as ap
def set_document_window(input_pdf, output_pdf):
"""Set document window properties and save the result."""
document = ap.Document(input_pdf)
document.center_window = True
document.direction = ap.Direction.R2L
document.display_doc_title = True
document.fit_window = True
document.hide_menubar = True
document.hide_tool_bar = True
document.hide_window_ui = True
document.non_full_screen_page_mode = ap.PageMode.USE_OC
document.page_layout = ap.PageLayout.TWO_COLUMN_LEFT
document.page_mode = ap.PageMode.USE_THUMBS
document.save(output_pdf)
Intégration des polices de type 1 standard
Some PDF documents have fonts from a special Adobe font set. Fonts from this set are called “Standard Type 1 Fonts”. This set includes 14 fonts and embedding this type of fonts requires using of special flags i.e embed_standard_fonts. Le fragment de code suivant peut être utilisé pour obtenir un document avec toutes les polices incorporées, y compris les polices Type 1 standard :
import aspose.pdf as ap
def embedded_fonts(input_pdf, output_pdf):
"""Ensure fonts in an existing PDF are embedded."""
document = ap.Document(input_pdf)
document.embed_standard_fonts = True
for page in document.pages:
if page.resources.fonts:
for page_font in page.resources.fonts:
if not page_font.is_embedded:
page_font.is_embedded = True
document.save(output_pdf)
Intégration des polices lors de la création de PDF
Si vous devez utiliser une police autre que les 14 polices de base prises en charge par Adobe Reader, vous devez intégrer la description de la police lors de la génération du fichier PDF. Si les informations de police ne sont pas intégrées, Adobe Reader les prendra du système d’exploitation si elle est installée sur le système, ou il construira une police de substitution selon le descripteur de police dans le PDF.
Veuillez noter que la police incorporée doit être installée sur la machine hôte, c.-à-d. dans le cas du code suivant, la police ‘Univers Condensed’ est installée sur le système.
Nous utilisons la propriété ‘is_embedded’ pour intégrer les informations de police dans le fichier PDF. Définir la valeur de cette propriété sur ‘True’ intégrera le fichier de police complet dans le PDF, en sachant que cela augmentera la taille du fichier PDF. Voici le fragment de code qui peut être utilisé pour intégrer les informations de police dans le PDF.
import aspose.pdf as ap
def embedded_fonts_in_new_document(input_pdf, output_pdf):
"""Embed fonts while generating a document from scratch."""
document = ap.Document()
page = document.pages.add()
fragment = ap.text.TextFragment("")
segment = ap.text.TextSegment(" This is a sample text using Custom font.")
text_state = ap.text.TextState()
text_state.font = ap.text.FontRepository.find_font("Arial")
text_state.font.is_embedded = True
segment.text_state = text_state
fragment.segments.append(segment)
page.paragraphs.add(fragment)
document.save(output_pdf)
Définir le nom de police par défaut lors de l’enregistrement du PDF
Lorsqu’un document PDF contient des polices qui ne sont pas disponibles dans le document lui‑même et sur l’appareil, l’API remplace ces polices par la police par défaut. Si la police est disponible (installée sur l’appareil ou incorporée dans le document), le PDF généré doit conserver la même police (ne doit pas être remplacée par la police par défaut). La valeur de la police par défaut doit contenir le nom de la police (et non le chemin vers les fichiers de police). Nous avons implémenté une fonctionnalité permettant de définir le nom de la police par défaut lors de l’enregistrement d’un document au format PDF. Le fragment de code suivant peut être utilisé pour définir la police par défaut :
import aspose.pdf as ap
def set_default_font(input_pdf, output_pdf):
"""Assign a fallback font when saving a PDF."""
document = ap.Document(input_pdf)
save_options = ap.PdfSaveOptions()
save_options.default_font_name = "Arial"
document.save(output_pdf, save_options)
Obtenir toutes les polices du PDF Document
Dans le cas où vous souhaitez obtenir toutes les polices d’un document PDF, vous pouvez utiliser font_utilities méthode fournie dans Document classe. Veuillez vérifier le fragment de code suivant afin d’obtenir toutes les polices d’un document PDF existant :
import aspose.pdf as ap
def get_all_fonts(input_pdf, output_pdf):
"""Print all fonts referenced by a document."""
document = ap.Document(input_pdf)
for font in document.font_utilities.get_all_fonts():
print(font.font_name)
Améliorer l’intégration des polices en utilisant FontSubsetStrategy
Le fragment de code suivant montre comment définir FontSubsetStrategy utilisé font_utilities propriété:
import aspose.pdf as ap
def improve_fonts_embedding(input_pdf, output_pdf):
"""Apply different font subset strategies to reduce file size."""
document = ap.Document(input_pdf)
document.font_utilities.subset_fonts(ap.FontSubsetStrategy.SUBSET_ALL_FONTS)
document.font_utilities.subset_fonts(
ap.FontSubsetStrategy.SUBSET_EMBEDDED_FONTS_ONLY
)
document.save(output_pdf)
Obtenir‑définir le facteur de zoom du fichier PDF
Parfois, vous souhaitez déterminer quel est le facteur de zoom actuel d’un document PDF. Avec Aspose.Pdf, vous pouvez connaître la valeur actuelle ainsi qu’en définir une.
Le GoToAction La propriété Destination de la classe permet d’obtenir la valeur de zoom associée à un fichier PDF. De même, elle peut être utilisée pour définir le facteur de zoom d’un fichier.
Définir le facteur de zoom
L’extrait de code suivant montre comment définir le facteur de zoom d’un fichier PDF.
import aspose.pdf as ap
def set_zoom_factor(input_pdf, output_pdf):
"""Set an initial zoom level via document open action."""
document = ap.Document(input_pdf)
action = ap.annotations.GoToAction(
ap.annotations.XYZExplicitDestination(1, 0.0, 0.0, 0.5)
)
document.open_action = action
document.save(output_pdf)
Obtenir le facteur de zoom
L’extrait de code suivant montre comment obtenir le facteur de zoom d’un fichier PDF.
import aspose.pdf as ap
def get_zoom_factor(input_pdf, output_pdf):
"""Print the zoom level configured in the document open action."""
document = ap.Document(input_pdf)
action = document.open_action
if action and action.destination:
print("Zoom:", action.destination.zoom)
else:
print("Zoom: not set")