mirror of
https://github.com/Llewellynvdm/pdflayers.git
synced 2024-06-10 10:12:35 +00:00
43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
"""Utility functions used in pdflayers."""
|
|
import logging
|
|
import sys
|
|
|
|
import pikepdf
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def set_layer_visibility(pdf, layers_to_show):
|
|
"""Set visibility of layers."""
|
|
try:
|
|
ocgs = pdf.root.OCProperties.OCGs
|
|
except (AttributeError, KeyError):
|
|
logger.error("Unable to locate layers in PDF.")
|
|
sys.exit(1)
|
|
|
|
ocgs_on = []
|
|
for ocg in ocgs:
|
|
if ocg.Name in layers_to_show:
|
|
logger.info("Layer %s will be visible.", ocg.Name)
|
|
ocgs_on.append(ocg)
|
|
else:
|
|
logger.info("Layer %s will be hidden.", ocg.Name)
|
|
|
|
ocgs_config = pikepdf.Dictionary(
|
|
BaseState=pikepdf.Name('/OFF'),
|
|
ON=ocgs_on,
|
|
Order=ocgs,
|
|
)
|
|
|
|
pdf.root.OCProperties = pikepdf.Dictionary(
|
|
D=ocgs_config,
|
|
OCGs=ocgs,
|
|
)
|
|
|
|
# Needed for google-chrome (at least):
|
|
for ocg in ocgs:
|
|
if '/View' in ocg.Usage:
|
|
del ocg.Usage.View
|
|
if '/Print' in ocg.Usage:
|
|
del ocg.Usage.Print
|