On 25/03/15 15:49, Denis Auroux wrote:
Hi Romano,
Actually the order of attributes does matter.
Ok, fair enough. Would be nice to remove the order dependencies for XML
compliance, but it's not so urgent, I agree (I would love to be able to
work on other things that would be especially nice...).
By the way, if anyone need it (it needs python 3.4 I think), the script
to replace the bg is attached here (I hope it will go through the list).
Run with -h to have the help and options.
Romano
--
--
Romano at http://www.rgtti.com/
#! /usr/bin/env python3
# -*- coding: utf8 -*-
#
import sys
import os
import re
import argparse
import gzip
def warn(*what):
if args.verbose:
print("WARNING: ", *what, file=sys.stderr)
def error(*what):
print("ERROR: ", *what, file=sys.stderr)
sys.exit(1)
# regular expressions
page_element = r'<page.*>'
bg_element = r'<background.*>'
bg_pdf = r'type="pdf"'
has_pdf_file = r'filename=".+"'
# description
parser = argparse.ArgumentParser(
description="""change the background annotated PDF file in a Xournal file;
replace all PDF backgrounds with the first page of the given PDFfile.
It does not change any page with a non-PDF background, unless told with -a""")
# positional (mandatory) arguments
parser.add_argument('filein', metavar='filein',
help='Input file')
parser.add_argument('bgfile', metavar='bgfile',
help='Background file, must be a PDF')
parser.add_argument('fileout', metavar='fileout',
help='Output file')
#flag arguments
parser.add_argument("-v", "--verbose", dest='verbose', action="store_true",
help="increase output verbosity")
parser.add_argument("-o", "--overwrite", dest='overwrite', action="store_true",
help="overwrite output file (stop otherwise)")
parser.add_argument("-a", "--all", dest='all', action="store_true",
help="change all backgrounds, even native ones")
args=parser.parse_args()
full_bg_name=os.path.abspath(args.bgfile)
fin=gzip.open(args.filein, mode="rt", encoding="utf-8")
if (os.path.exists(args.fileout)):
if not args.overwrite:
error("File {} exists, aborted (use -o to override)".format(args.fileout))
else:
warn("Overwriting output file")
fout=gzip.open(args.fileout, mode="wt", encoding="utf-8")
for rline in fin:
line=rline.strip()
if re.match(bg_element, line) and (args.all or re.search(bg_pdf, line)):
warn("BG :", line)
if re.search(has_pdf_file, line):
newline = '<background type="pdf" domain="absolute" filename="{}" pageno="1" />'.format(full_bg_name)
else:
newline = '<background type="pdf" pageno="1" />'
warn("-> :", newline)
fout.write(newline)
fout.write("\n")
else:
fout.write(rline)
fin.close()
fout.close()
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Xournal-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xournal-devel