Formatando Documento PDF usando Python

Formatação do Documento PDF

Obter Propriedades da Janela do Documento e Exibição de Página

Este tópico ajuda você a entender como obter propriedades da janela do documento, aplicativo visualizador e como as páginas são exibidas. Para definir essas propriedades:

Abra o arquivo PDF usando a classe Document. Agora, você pode definir as propriedades do objeto Document, tais como:

  • CenterWindow – Centralizar a janela do documento na tela. Padrão: false.
  • Direction – Ordem de leitura. Isso determina como as páginas são dispostas quando exibidas lado a lado. Padrão: da esquerda para a direita.
  • DisplayDocTitle – Exibir o título do documento na barra de título da janela do documento. Padrão: false (o título é exibido).
  • HideMenuBar – Ocultar ou exibir a barra de menu da janela do documento. Padrão: false (a barra de menu é exibida).
  • HideToolBar – Ocultar ou exibir a barra de ferramentas da janela do documento. Padrão: false (a barra de ferramentas é exibida).
  • HideWindowUI – Ocultar ou exibir elementos da janela do documento, como barras de rolagem. Padrão: false (elementos da UI são exibidos).
  • NonFullScreenPageMode – Como o documento quando não está exibido em modo de página inteira.
  • PageLayout – O layout da página.
  • PageMode – Como o documento é exibido quando aberto pela primeira vez. As opções são mostrar miniaturas, tela cheia, mostrar painel de anexos.

O seguinte trecho de código mostra como obter as propriedades usando a classe Document.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Obter diferentes propriedades do documento
    # Posição da janela do documento - Padrão: false
    print("CenterWindow :", document.center_window)

    # Ordem de leitura predominante; determina a posição da página
    # Quando exibido lado a lado - Padrão: L2R
    print("Direction :", document.direction)

    # Se a barra de título da janela deve exibir o título do documento
    # Se false, a barra de título exibe o nome do arquivo PDF - Padrão: false
    print("DisplayDocTitle :", document.display_doc_title)

    # Se redimensionar a janela do documento para ajustar ao tamanho da
    # Primeira página exibida - Padrão: false
    print("FitWindow :", document.fit_window)

    # Se esconder a barra de menu do aplicativo visualizador - Padrão: false
    print("HideMenuBar :", document.hide_menubar)

    # Se esconder a barra de ferramentas do aplicativo visualizador - Padrão: false
    print("HideToolBar :", document.hide_tool_bar)

    # Se esconder elementos de UI como barras de rolagem
    # E deixar apenas o conteúdo da página exibido - Padrão: false
    print("HideWindowUI :", document.hide_window_ui)

    # Modo de página do documento. Como exibir o documento ao sair do modo de tela cheia.
    print("NonFullScreenPageMode :", document.non_full_screen_page_mode)

    # O layout da página, ou seja, página única, uma coluna
    print("PageLayout :", document.page_layout)

    # Como o documento deve ser exibido ao ser aberto
    # Ou seja, mostrar miniaturas, tela cheia, mostrar painel de anexos
    print("pageMode :", document.page_mode)

Definir Propriedades da Janela do Documento e Exibição de Página

Este tópico explica como definir as propriedades da janela do documento, aplicativo de visualização e exibição de página. Para definir essas diferentes propriedades:

  1. Abra o arquivo PDF usando a classe Document.
  2. Defina as propriedades do objeto Document.
  3. Salve o arquivo PDF atualizado usando o método save.

As propriedades disponíveis são:

  • CenterWindow
  • Direction
  • DisplayDocTitle
  • FitWindow
  • HideMenuBar
  • HideToolBar
  • HideWindowUI
  • NonFullScreenPageMode
  • PageLayout
  • PageMode

Cada uma é usada e descrita no código abaixo. O seguinte trecho de código mostra como definir as propriedades usando a classe Document.


    import aspose.pdf as ap

    # Abrir documento
    document = ap.Document(input_pdf)

    # Definir diferentes propriedades do documento
    # Especificar para posicionar a janela do documento - Padrão: false
    document.center_window = True

    # Ordem de leitura predominante; determina a posição da página
    # Quando exibido lado a lado - Padrão: L2R
    document.direction = ap.Direction.R2L

    # Especificar se a barra de título da janela deve exibir o título do documento
    # Se false, a barra de título exibe o nome do arquivo PDF - Padrão: false
    document.display_doc_title = True

    # Especificar se deve redimensionar a janela do documento para ajustar ao tamanho da
    # Primeira página exibida - Padrão: false
    document.fit_window = True

    # Especificar se deve ocultar a barra de menu do aplicativo de visualização - Padrão: false
    document.hide_menubar = True

    # Especificar se deve ocultar a barra de ferramentas do aplicativo de visualização - Padrão: false
    document.hide_tool_bar = True

    # Especificar se deve ocultar elementos da interface do usuário como barras de rolagem
    # E deixar apenas o conteúdo da página exibido - Padrão: false
    document.hide_window_ui = True

    # Modo de página do documento. especificar como exibir o documento ao sair do modo de tela cheia.
    document.non_full_screen_page_mode = ap.PageMode.USE_OC

    # Especificar o layout da página, ou seja, página única, uma coluna
    document.page_layout = ap.PageLayout.TWO_COLUMN_LEFT

    # Especificar como o documento deve ser exibido quando aberto
    # Ou seja, mostrar miniaturas, tela cheia, mostrar painel de anexos
    document.page_mode = ap.PageMode.USE_THUMBS

    # Salvar arquivo PDF atualizado
    document.save(output_pdf)

Incorporando Fontes Tipo 1 Padrão

Alguns documentos PDF possuem fontes de um conjunto especial de fontes da Adobe. Fontes deste conjunto são chamadas de “Fontes Tipo 1 Padrão”. Este conjunto inclui 14 fontes e incorporar este tipo de fontes requer o uso de flags especiais, ou seja, embed_standard_fonts. A seguir está o trecho de código que pode ser usado para obter um documento com todas as fontes incorporadas, incluindo Fontes Tipo 1 Padrão:


    import aspose.pdf as ap

    # Carregar um Documento PDF existente
    document = ap.Document(input_pdf)
    # Definir a propriedade EmbedStandardFonts do documento
    document.embed_standard_fonts = True
    for page in document.pages:
        if page.resources.fonts != None:
            for page_font in page.resources.fonts:
                # Verificar se a fonte já está incorporada
                if not page_font.is_embedded:
                    page_font.is_embedded = True

    document.save(output_pdf)

Incorporando Fontes ao criar PDF

Se você precisar usar qualquer fonte além das 14 fontes principais suportadas pelo Adobe Reader, você deve incorporar a descrição da fonte ao gerar o arquivo PDF. Se a informação da fonte não estiver incorporada, o Adobe Reader a obterá do Sistema Operacional se estiver instalada no sistema, ou construirá uma fonte substituta de acordo com o descritor de fonte no PDF.

Por favor, note que a fonte incorporada deve estar instalada na máquina host, ou seja, no caso do seguinte código a fonte ‘Univers Condensed’ está instalada no sistema.

Usamos a propriedade ‘is_embedded’ para incorporar a informação da fonte no arquivo PDF. Definir o valor desta propriedade como ‘True’ irá incorporar o arquivo completo da fonte no PDF, sabendo que isso aumentará o tamanho do arquivo PDF. A seguir está o trecho de código que pode ser usado para incorporar a informação da fonte no PDF.


    import aspose.pdf as ap

    # Instanciar objeto Pdf chamando seu construtor vazio
    doc = ap.Document()

    # Criar uma seção no objeto Pdf
    page = doc.pages.add()

    fragment = ap.text.TextFragment("")
    segment = ap.text.TextSegment(" Este é um texto de exemplo usando fonte personalizada.")
    ts = ap.text.TextState()
    ts.font = ap.text.FontRepository.find_font("Arial")
    ts.font.is_embedded = True
    segment.text_state = ts
    fragment.segments.append(segment)
    page.paragraphs.add(fragment)

    # Salvar Documento PDF
    doc.save(output_pdf)

Definir Nome de Fonte Padrão ao Salvar PDF

Quando um documento PDF contém fontes que não estão disponíveis no próprio documento e no dispositivo, a API substitui essas fontes pela fonte padrão. Se a fonte estiver disponível (instalada no dispositivo ou incorporada no documento), o PDF de saída deve ter a mesma fonte (não deve ser substituída pela fonte padrão). O valor da fonte padrão deve conter o nome da fonte (não o caminho para os arquivos de fonte). Implementamos um recurso para definir o nome da fonte padrão ao salvar um documento como PDF. O seguinte trecho de código pode ser usado para definir a fonte padrão:


    import aspose.pdf as ap

    # Carregar um documento PDF existente com fonte ausente
    document = ap.Document(input_pdf)

    pdfSaveOptions = ap.PdfSaveOptions()
    # Especificar Nome da Fonte Padrão
    newName = "Arial"
    pdfSaveOptions.default_font_name = newName
    document.save(output_pdf, pdfSaveOptions)

Obter Todas as Fontes de um Documento PDF

Caso você queira obter todas as fontes de um documento PDF, você pode usar o método font_utilities fornecido na classe Document. Verifique o seguinte trecho de código para obter todas as fontes de um documento PDF existente:


    import aspose.pdf as ap

    doc = ap.Document(input_pdf)
    fonts = doc.font_utilities.get_all_fonts()
    for font in fonts:
        print(font.font_name)

Melhorar a Incorporação de Fontes usando FontSubsetStrategy

O trecho de código a seguir mostra como definir FontSubsetStrategy usando a propriedade font_utilities:


    import aspose.pdf as ap

    doc = ap.Document(input_pdf)
    # Todas as fontes serão incorporadas como subconjunto no documento no caso de SubsetAllFonts.
    doc.font_utilities.subset_fonts(ap.FontSubsetStrategy.SUBSET_ALL_FONTS)
    # O subconjunto de fontes será incorporado para fontes totalmente incorporadas, mas fontes que não estão incorporadas no documento não serão afetadas.
    doc.font_utilities.subset_fonts(ap.FontSubsetStrategy.SUBSET_EMBEDDED_FONTS_ONLY)
    doc.save(output_pdf)

Obter-Definir Fator de Zoom de Arquivo PDF

Às vezes, você quer determinar qual é o fator de zoom atual de um documento PDF. Com Aspose.Pdf, você pode descobrir o valor atual e também definir um.

A propriedade Destination da classe GoToAction permite que você obtenha o valor de zoom associado a um arquivo PDF. Da mesma forma, ela pode ser usada para definir o fator de zoom de um arquivo.

Definir fator de Zoom

O trecho de código a seguir mostra como definir o fator de zoom de um arquivo PDF.


    import aspose.pdf as ap

    # Instanciar novo objeto Document
    doc = ap.Document(input_pdf)

    action = ap.annotations.GoToAction(ap.annotations.XYZExplicitDestination(1, 0.0, 0.0, 0.5))
    doc.open_action = action
    # Salvar o documento
    doc.save(output_pdf)

Obter Fator de Zoom

O trecho de código a seguir mostra como obter o fator de zoom de um arquivo PDF.


    import aspose.pdf as ap

    # Instanciar novo objeto Document
    doc = ap.Document(input_pdf)

    # Criar objeto GoToAction
    action = doc.open_action

    # Obter o fator de Zoom do arquivo PDF
    print(action.destination.zoom)

Configurando Propriedades Predefinidas de Diálogo de Impressão

Aspose.PDF permite configurar os membros DUPLEX_FLIP_LONG_EDGE de um documento PDF. Isso permite alterar a propriedade DuplexMode de um documento PDF, que é configurada como simplex por padrão. Isso pode ser realizado usando duas metodologias diferentes, como mostrado abaixo.


    import aspose.pdf as ap

    doc = ap.Document()
    doc.pages.add()
    doc.duplex = ap.PrintDuplex.DUPLEX_FLIP_LONG_EDGE
    doc.save(output_pdf)

Configurando Propriedades Predefinidas de Diálogo de Impressão usando Editor de Conteúdo PDF


    import aspose.pdf as ap

    ed = ap.facades.PdfContentEditor()
    ed.bind_pdf(input_pdf)
    if (ed.get_viewer_preference() & ap.facades.ViewerPreference.DUPLEX_FLIP_SHORT_EDGE) > 0:
        print("O arquivo tem duplex flip borda curta")

    ed.change_viewer_preference(ap.facades.ViewerPreference.DUPLEX_FLIP_SHORT_EDGE)
    ed.save(output_pdf)