1
votes

est-il possible d'arrêter de copier du texte à partir de l'aperçu avant impression?

J'essaie d'empêcher l'utilisateur de sélectionner et de copier du texte lorsqu'il est sur l'écran d'impression.

J'ai utilisé ce CSS pour désactiver select.

$(document).bind('contextmenu cut copy', function (e) {
    e.preventDefault();
});

Et cette jquery pour empêcher l'option copier, coller et clic droit dans ma page Web

.disable-select {
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none;   /* Chrome/Safari/Opera */
    -khtml-user-select: none;    /* Konqueror */
    -moz-user-select: none;      /* Firefox */
    -ms-user-select: none;       /* Internet Explorer/Edge */
    user-select: none;           /* Non-prefixed version, currently supported by any browser but < IE9 */
}

<body class="disable-select">
    ...
</body

Cela fonctionne sur la page Web, mais lorsque nous appuyons sur ctrl + p pour imprimer la page Web et continuons l'écran des options d'impression, aucun des codes ci-dessus ne fonctionne sur cet écran

stop sélection de texte et copie sur cet écran d'impression


3 commentaires

Notez qu'il n'est pas utile d'empêcher les utilisateurs de copier du texte à partir de l'aperçu avant impression; ils pouvaient simplement les imprimer via une imprimante virtuelle (désormais intégrée à Windows) et copier le texte du document PDF ou PostScript généré.


J'ai rouvert ceci en raison de la clarification du PO. Je suis presque sûr qu'il y aura une autre cible de dupe, cependant


L'utilisateur peut imprimer la page. Ma seule préoccupation est d'empêcher l'utilisateur de sélectionner et de copier du texte à partir de l'écran d'aperçu avant impression. S'il est possible de le faire de toute façon, veuillez me suggérer.


3 Réponses :


0
votes

"Vous ne pouvez pas désactiver la capture d'écran à partir du navigateur Web, cela ne serait possible qu'en installant un logiciel supplémentaire sur le PC de l'utilisateur.

Il existe des outils IRM (Information Rights Management) qui font cela, par exemple en protégeant les appels d'API Windows / DirectX et en surveillant également la mémoire vidéo telle qu'Oracle IRM ou telle que la technologie IRM de Microsoft.

En particulier, ce dernier peut être intéressant car il existe également un module complémentaire de gestion des droits pour Internet Explorer.

Mais comme d’autres l’ont déjà dit, toute technologie IRM / DRM est controversée et vous devez comprendre qu’elle limitera ou dérangera le plus souvent vos utilisateurs. "

Mais vous pouvez essayer de copier autre chose dans le presse-papiers, consultez le lien ci-dessous.

Source: Empêcher l'utilisateur d'utiliser la touche "Print Scrn" / "Printscreen" du clavier pour n'importe quelle page Web


1 commentaires

Juste pour info, le PO a changé le titre de la question afin que ce ne soit plus pertinent par rapport à ce qu'il demande



0
votes

Avez-vous essayé ce qui suit?

@media print {
  .body{
    -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none;   /* Chrome/Safari/Opera */
    -khtml-user-select: none;    /* Konqueror */
    -moz-user-select: none;      /* Firefox */
    -ms-user-select: none;       /* Internet Explorer/Edge */
    user-select: none;           /* Non-prefixed version, currently supported by any browser but < IE9 */
  }
}


0 commentaires

2
votes

Il n'est pas possible d'affecter l'aperçu avant impression. Vous pouvez prendre un regardez ici

Mais vous pouvez empêcher les gens d'avoir ce morceau de texte entièrement dans la page imprimée. Quelque chose comme ceci:

@media print{
   .disable-text{
      filter:grayscale(100%)
   }
   .fixed-elements{
      position: relative;
   }
}

Modifier

Il y a un moyen de faire cela, plus un truc similaire plutôt qu'un bon Fonctionnalité CSS, mais cela ne fonctionne que dans les navigateurs modernes.

Apparemment, l'utilisation de filtres CSS empêchera l'utilisateur de sélectionner le texte dans l'aperçu avant impression

@media print{
   .disable-text{
      filter:grayscale(100%)
   }
}

Tableau de compatibilité des filtres CSS

EDIT 2

Définir également la position des éléments fixes sur relative dans le scénario d'impression.

.disable-select {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;    
    -moz-user-select: none;      
    -ms-user-select: none;      
    user-select: none;
}
@media print{
   .disable-select{
       display:none
   }
}

EDIT 3

Ou une autre solution qui empêche les éléments fixes de la modification consiste à ajouter la classe disable-text à la balise HTML ou aux divs spécifiques où vous souhaitez empêcher la copie du texte.


12 commentaires

Merci pour la suggestion, mais si nous fournissons l'option d'impression à l'utilisateur, il est important de lui laisser un aperçu de ce qu'il va imprimer. Tout ce que je veux dire, c'est que je ne veux pas cacher le contenu à l'utilisateur sur l'écran d'aperçu avant impression.


Droit! J'ai compris. Il y a une petite astuce qui peut vous aider ici qui ne fonctionne malheureusement pas dans IE. J'ai mis à jour ma réponse, alors jetez un œil.


Si nous utilisons {filter: saturate (0.9)}, cela n'autorisera toujours pas la copie de texte et il apparaîtra également en couleur. Excellent travail @VladRacoare.


Oui! N'importe quel type de filtre fera l'affaire. Je suppose que cela est dû à la façon dont les navigateurs affichent ces filtres.


C'est une bonne solution Mais cela crée un conflit avec le poste et ne me sert pas. Existe-t-il un autre moyen de faire la même chose mais avec une méthode différente.


Pouvez-vous donner un aperçu de la façon dont cela affecte la position, s'il vous plaît? Cela m'aidera à trouver une réponse appropriée.


Si vous avez une page Web avec un en-tête fixe, un bouton de défilement fixe vers le haut ou tout élément fixe, puis appliquez le filtre sur le corps, l'élément de position fixe sera égaré.


C'est pourquoi vous devez utiliser @media print {} . La propriété de filtre sera ajoutée uniquement sur la version imprimée de la page et non sur la page Web / en direct.


Ouais! J'ai fait la même chose, mais lorsque nous imprimons une page, nous obtenons des éléments fixes égarés dans un fichier pdf enregistré ou un document imprimé.


Ensuite, je recommande de définir la position de ces éléments fixes sur relative sur le scénario d'impression `@media print {.disable-text {filter: grayscale (100%); } .fixed-elements {position: relative; }} `Vous pouvez également consulter la réponse mise à jour ci-dessus.


Salut @VishnuKumar. Après avoir examiné un peu plus ce problème, la meilleure chose à faire ici est d'ajouter le disable-text aux div spécifiques dont vous souhaitez empêcher la copie ou de l'ajouter au HTML < / b> et vous éviterez ainsi de modifier le positionnement.


C'est ce à quoi j'ai pensé avant.