Tooltip em PDF usando Python
Adicionar Tooltip ao Texto Pesquisado adicionando Botão Invisível
Este código demonstra como adicionar tooltips a fragmentos de texto específicos em um documento PDF usando Aspose.PDF. Os tooltips são exibidos quando o cursor do mouse passa sobre o texto correspondente.
O trecho de código a seguir mostrará como alcançar essa funcionalidade:
import aspose.pdf as ap
document = ap.Document()
document.pages.add().paragraphs.add(
ap.text.TextFragment("Mova o cursor do mouse aqui para exibir um tooltip")
)
document.pages[1].paragraphs.add(
ap.text.TextFragment(
"Mova o cursor do mouse aqui para exibir um tooltip muito longo"
)
)
document.save(output_pdf)
# Abrir documento com texto
document = ap.Document(output_pdf)
# Criar objeto TextAbsorber para encontrar todas as frases que correspondem à expressão regular
absorber = ap.text.TextFragmentAbsorber(
"Mova o cursor do mouse aqui para exibir um tooltip"
)
# Aceitar o absorvedor para as páginas do documento
document.pages.accept(absorber)
# Obter os fragmentos de texto extraídos
text_fragments = absorber.text_fragments
# Percorrer os fragmentos
for fragment in text_fragments:
# Criar botão invisível na posição do fragmento de texto
field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
# O valor alternate_name será exibido como tooltip por um aplicativo visualizador
field.alternate_name = "Tooltip para texto."
# Adicionar campo de botão ao documento
document.form.add(field)
# Próximo será um exemplo de tooltip muito longo
absorber = ap.text.TextFragmentAbsorber(
"Mova o cursor do mouse aqui para exibir um tooltip muito longo"
)
document.pages.accept(absorber)
text_fragments = absorber.text_fragments
for fragment in text_fragments:
field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
# Definir texto muito longo
field.alternate_name = (
"Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
" sed do eiusmod tempor incididunt ut labore et dolore magna"
" aliqua. Ut enim ad minim veniam, quis nostrud exercitation"
" ullamco laboris nisi ut aliquip ex ea commodo consequat."
" Duis aute irure dolor in reprehenderit in voluptate velit"
" esse cillum dolore eu fugiat nulla pariatur. Excepteur sint"
" occaecat cupidatat non proident, sunt in culpa qui officia"
" deserunt mollit anim id est laborum."
)
document.form.add(field)
# Salvar documento
document.save(output_pdf)
Criar um Bloco de Texto Oculto e Mostrá-lo ao Passar o Mouse
Este trecho de código Python mostra como adicionar texto flutuante a um documento PDF, que aparece quando o cursor do mouse passa sobre uma área específica.
Primeiro, um novo documento PDF é criado, e um parágrafo contendo o texto “Mova o cursor do mouse aqui para exibir o texto flutuante” é adicionado a ele. O documento é então salvo.
Em seguida, o documento salvo é reaberto, e um objeto TextAbsorber é criado para encontrar o fragmento de texto adicionado anteriormente. Este fragmento de texto é então usado para definir a posição e as características do campo de texto flutuante.
Um objeto TextBoxField é criado para representar o campo de texto flutuante, e suas propriedades como posição, valor, status de somente leitura e visibilidade são configuradas adequadamente. Além disso, um nome único e características de aparência são atribuídos ao campo.
O campo de texto flutuante é adicionado ao formulário do documento, e um campo de botão invisível é criado na posição do fragmento de texto original. Os eventos HideAction são atribuídos ao campo do botão, especificando que o campo de texto flutuante deve aparecer quando o cursor do mouse entrar em sua proximidade e desaparecer quando o cursor sair.
Finalmente, o campo do botão é adicionado ao formulário do documento, e o documento modificado é salvo.
Este trecho de código fornece um método para criar elementos de texto flutuantes interativos em um documento PDF usando Aspose.PDF para Python.
import aspose.pdf as ap
document = ap.Document()
document.pages.add().paragraphs.add(
ap.text.TextFragment("Mova o cursor do mouse aqui para exibir o texto flutuante")
)
document.save(output_pdf)
# Abrir documento com texto
document = ap.Document(output_pdf)
# Criar objeto TextAbsorber para encontrar todas as frases que correspondem à expressão regular
absorber = ap.text.TextFragmentAbsorber(
"Mova o cursor do mouse aqui para exibir o texto flutuante"
)
# Aceitar o absorvedor para as páginas do documento
document.pages.accept(absorber)
# Obter o primeiro fragmento de texto extraído
text_fragments = absorber.text_fragments
fragment = text_fragments[1]
# Criar campo de texto oculto para texto flutuante no retângulo especificado da página
floating_field = ap.forms.TextBoxField(
fragment.page, ap.Rectangle(100.0, 700.0, 220.0, 740.0, False)
)
# Definir texto a ser exibido como valor do campo
floating_field.value = 'Este é o "campo de texto flutuante".'
# Recomendamos tornar o campo 'somente leitura' para este cenário
floating_field.read_only = True
# Definir flag 'oculto' para tornar o campo invisível na abertura do documento
floating_field.flags |= ap.annotations.AnnotationFlags.HIDDEN
# Definir um nome de campo único não é necessário, mas permitido
floating_field.partial_name = "FloatingField_1"
# Definir características de aparência do campo não é necessário, mas melhora
floating_field.default_appearance = ap.annotations.DefaultAppearance(
"Helv", 10, ap.Color.blue.to_rgb()
)
floating_field.characteristics.background = ap.Color.light_blue.to_rgb()
floating_field.characteristics.border = ap.Color.dark_blue.to_rgb()
floating_field.border = ap.annotations.Border(floating_field)
floating_field.border.width = 1
floating_field.multiline = True
# Adicionar campo de texto ao documento
document.form.add(floating_field)
# Criar botão invisível na posição do fragmento de texto
button_field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
# Criar nova ação de ocultação para o campo especificado (anotação) e flag de invisibilidade.
# (Você também pode referir-se ao campo flutuante pelo nome se especificado anteriormente.)
# Adicionar ações de entrada/saída do mouse no campo do botão invisível
button_field.actions.on_enter = ap.annotations.HideAction(
floating_field.partial_name, False
)
button_field.actions.on_exit = ap.annotations.HideAction(
floating_field.partial_name
)
# Adicionar campo do botão ao documento
document.form.add(button_field)
# Salvar documento
document.save(output_pdf)