from sys import exc_info
from traceback import print_tb
from PDFlib.PDFlib import *
import time
ts = time.time()
import datetime
st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
import os
dirlist = os.listdir("C:/adfs/pTrans3")
from pprint import pprint

pprint(dirlist)

searchpath = "C:/adfs/pTrans3"
imagefile = "blank.jpg"
outfile = ""
title = "PDF Impose"
pdffiles = dirlist

p = PDFlib()

try:
    p.set_option("errorpolicy=return")
    p.set_option("license=w900602-010300-741796-5KVCF2-Q4PLF2")
    # Set the search path for fonts and PDF files

    p.set_option("SearchPath={{" + searchpath +"}}")
    strp = pdffiles[0]
    print ("fName:"+strp[:-12])
    print ("stp:"+strp[-8:-5])
    print ("stp2:"+strp[-12:-9])
    import re

    text = pdffiles[0]
    print(re.split('_',text))
    
    try:
        pp=re.split('_',text)
        pname = pp[1]
    except (RuntimeError, TypeError, NameError,IndexError): ##no sized name
        print("else!!41")
        
        indocP = p.open_pdi_document(pdffiles[0], "")
        print("Warning:"+pdffiles[0]+" \n")
        four = pdffiles[0][0:-4]
        print(four)
        pwidth = p.pcos_get_number(indocP, "pages[0]/width")/2.8346;
        pwidthx = p.pcos_get_number(indocP, "pages[0]/width");
        pheight = p.pcos_get_number(indocP, "pages[0]/height")/2.8346;
        pheightx = p.pcos_get_number(indocP, "pages[0]/height");

        trimwidth=p.pcos_get_number(indocP, "pages[0]/TrimBox[2]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[0]");
        trimheight=p.pcos_get_number(indocP, "pages[0]/TrimBox[3]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[1]");
        m=2.8346
        ratioP=1

        trimwidthm=round(trimwidth/m/10,1)
        trimheightm=round(trimheight/m/10,1)

        if p.begin_document("C:/adfs/Xout/"+four+"~"+str(trimwidthm)+"~"+str(trimheightm)+".pdf", "") == -1:
                raise PDFlibException("Error: trimwidth" + p.get_errmsg())

        p.set_info("Creator", "placePdf.py")
        p.set_info("Author", "Fred Kuo")
        p.set_info("Title","PDFlib block processing sample (C)")

        #p.begin_page_ext(float(width)*m+2*m, float(height)*m+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(width)*m+1*m)+ " "+ str(float(height)*m+1*m)+" }")  
        p.begin_page_ext(float(trimwidth)*ratioP+2*m, float(trimheight)*ratioP+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(trimwidth)*ratioP+1*m)+ " "+ str(float(trimheight)*ratioP+1*m)+" }")

        blockcontainer = p.open_pdi_document(pdffiles[0], "")
        if blockcontainer == -1:
                raise PDFlibException("Error:pwidth " + p.get_errmsg())    
        pages = p.open_pdi_page(blockcontainer,1, "")

        shiftw=((pwidthx-trimwidth)/2*ratioP)-m        
        print("shihtw:"+str(shiftw)+" \n")
        shifth=((pheightx-trimheight)/2*ratioP)-m        
        print("shihth:"+str(shifth)+" \n")
        
        #optlist="boxsize={"+str(pwidth+2*m)+" "+str(pheight+2*m)+"} position=center fitmethod=clip"
        optlist="boxsize={"+str(pwidthx*ratioP)+" "+str(pheightx*ratioP)+"} position=center fitmethod=meet"

        p.fit_pdi_page(pages,    -shiftw, -shifth, optlist); ############left end no size

        ######################################################################################################
        p.end_page_ext("")
        p.end_document("") 
        
        source = 'C:/adfs/pTrans3'
        #destination = 'C:/adfs/Xout'
        hold = 'C:/adfs/hold'

        import shutil

        for file in os.listdir(source):

            #print file # testing
            shutil.copy(source+"/"+pdffiles[0], hold+"/"+pdffiles[0])
            #shutil.move(source+"/"+pdffiles[0], destination+"/"+four+"~"+str(pwidth)+"~"+str(pheight)+".pdf")
        sys.exit()
        #no size

    print ("domain:"+pname )
    str1 = pp[1][:1];
################################################# 22x33.pdf end
    if ".pdf"  in pp[1]: 

        print ("pp2:"+pp[1] )
        print("else2!!")
        dd=pp[1]
        print ("dd:"+dd )
        pd=dd.split('.p',1)
        #pd=dd.split('.',1)
        dname=pd[0]
        print ("pd2:"+str(dname) )
        strd= dname[:1]


        dname=dname.lower()
        size=dname.split('x', 1)
        widthp=size[0]       
        heightp=size[1]
        width=float(size[0])*10
        height=float(size[1])*10

        print ("width:"+str(width) )
        print ("height:"+str(height) )
        
        pageopen = 0
        indocP = p.open_pdi_document(pdffiles[0], "")
        pwidth = p.pcos_get_number(indocP, "pages[0]/width")/2.8346;
        pwidthx = p.pcos_get_number(indocP, "pages[0]/width");
        pheight = p.pcos_get_number(indocP, "pages[0]/height")/2.8346;
        pheightx = p.pcos_get_number(indocP, "pages[0]/height");
        ppwidth=float(pwidth)/2.8346

        print ("pwidth:"+str(pwidth))
        print ("pheight:"+str(pheight) )

        pwidthTr = p.pcos_get_number(indocP, "pages[0]/TrimBox[2]");
        pheightTr = p.pcos_get_number(indocP, "pages[0]/TrimBox[3]");
        pwidthTr0 = p.pcos_get_number(indocP, "pages[0]/TrimBox[0]");
        pheightTr0 = p.pcos_get_number(indocP, "pages[0]/TrimBox[1]");
        endpage = p.pcos_get_number(indocP, "length:pages")
        trimwidth=p.pcos_get_number(indocP, "pages[0]/TrimBox[2]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[0]");
        trimheight=p.pcos_get_number(indocP, "pages[0]/TrimBox[3]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[1]");

        m=2.8346
        
        print("Warning:"+pdffiles[0]+" \n")
        four = pdffiles[0][0:-4]
        print(four)
        print("width:"+str(pwidth)+" \n")
        print("heigtht:"+str(pheight)+" \n")
        print("widthTr:"+str(pwidthTr/m)+" \n")
        print("heigthtTr:"+str(pheightTr/m)+" \n")
        print("Trx:"+str(trimwidth/m)+" \n")
        print("Try:"+str(trimheight/m)+" \n")
        ratioP=(float(width*m))/float(trimwidth)
        print("ration:"+str(ratioP)+" \n")
    ######################################start doc
        for i in range(0,  int(endpage), 1):

            if p.begin_document("C:/adfs/Xout/"+four+"~"+widthp+"~"+heightp+".pdf", "") == -1:
                    raise PDFlibException("Error: trimwidth" + p.get_errmsg())

            p.set_info("Creator", "placePdf.py")
            p.set_info("Author", "Fred Kuo")
            p.set_info("Title","PDFlib block processing sample (C)")

            #p.begin_page_ext(float(width)*m+2*m, float(height)*m+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(width)*m+1*m)+ " "+ str(float(height)*m+1*m)+" }")  
            p.begin_page_ext(float(trimwidth)*ratioP+2*m, float(trimheight)*ratioP+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(trimwidth)*ratioP+1*m)+ " "+ str(float(trimheight)*ratioP+1*m)+" }")

            blockcontainer = p.open_pdi_document(pdffiles[0], "")
            if blockcontainer == -1:
                    raise PDFlibException("Error:pwidth " + p.get_errmsg())    
            pages = p.open_pdi_page(blockcontainer, i+1, "")

            shiftw=((pwidthx-trimwidth)/2*ratioP)-m        
            print("shihtw:"+str(shiftw)+" \n")
            shifth=((pheightx-trimheight)/2*ratioP)-m        
            print("shihth:"+str(shifth)+" \n")
            
            #optlist="boxsize={"+str(pwidth+2*m)+" "+str(pheight+2*m)+"} position=center fitmethod=clip"
            optlist="boxsize={"+str(pwidthx*ratioP)+" "+str(pheightx*ratioP)+"} position=center fitmethod=meet"

            p.fit_pdi_page(pages,    -shiftw, -shifth, optlist); ############left end

            ######################################################################################################
            p.end_page_ext("")
            p.end_document("")
        
        sys.exit()### .pdf end
################################################################################### sized name
    str2 = pp[2][:1];
    pname = pp[1]

    pname=pname.lower()
    size=pname.split('x', 1)

 ################################################################################################################## 
    widthp=size[0]
    heightp=size[1]

    width=float(size[0])*10  #from name
    height=float(size[1])*10  #from name

    print ("width:"+str(width) )
    print ("height:"+str(height) )

    pageopen = 0
    indocP = p.open_pdi_document(pdffiles[0], "")
    pwidth = p.pcos_get_number(indocP, "pages[0]/width")/2.8346;
    pwidthx = p.pcos_get_number(indocP, "pages[0]/width");
    pheight = p.pcos_get_number(indocP, "pages[0]/height")/2.8346;
    pheightx = p.pcos_get_number(indocP, "pages[0]/height");
    ppwidth=float(pwidth)/2.8346

    print ("pwidth:"+str(pwidth))
    print ("pheight:"+str(pheight) )

    pwidthTr = p.pcos_get_number(indocP, "pages[0]/TrimBox[2]");
    pheightTr = p.pcos_get_number(indocP, "pages[0]/TrimBox[3]");
    pwidthTr0 = p.pcos_get_number(indocP, "pages[0]/TrimBox[0]");
    pheightTr0 = p.pcos_get_number(indocP, "pages[0]/TrimBox[1]");
    endpage = p.pcos_get_number(indocP, "length:pages")
    trimwidth=p.pcos_get_number(indocP, "pages[0]/TrimBox[2]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[0]");
    trimheight=p.pcos_get_number(indocP, "pages[0]/TrimBox[3]")-p.pcos_get_number(indocP, "pages[0]/TrimBox[1]");

    m=2.8346
    
    print("Warning:"+pdffiles[0]+" \n")
    four = pdffiles[0][0:-4]
    print(four)
    print("width:"+str(pwidth)+" \n")
    print("heigtht:"+str(pheight)+" \n")
    print("widthTr:"+str(pwidthTr/m)+" \n")
    print("heigthtTr:"+str(pheightTr/m)+" \n")
    print("Trx:"+str(trimwidth/m)+" \n")
    print("Try:"+str(trimheight/m)+" \n")
    ratioP=(float(width*m))/float(trimwidth)
    print("ration:"+str(ratioP)+" \n")
######################################start doc
    for i in range(0,  int(endpage), 1):

        if p.begin_document("C:/adfs/Xout/"+four+"~"+widthp+"~"+heightp+".pdf", "") == -1:
                raise PDFlibException("Error: trimwidth" + p.get_errmsg())

        p.set_info("Creator", "placePdf.py")
        p.set_info("Author", "Fred Kuo")
        p.set_info("Title","PDFlib block processing sample (C)")

        #p.begin_page_ext(float(width)*m+2*m, float(height)*m+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(width)*m+1*m)+ " "+ str(float(height)*m+1*m)+" }")  
        p.begin_page_ext(float(trimwidth)*ratioP+2*m, float(trimheight)*ratioP+2*m, "trimbox={"+str(1*m)+" "+str(1*m)+ " "+str(float(trimwidth)*ratioP+1*m)+ " "+ str(float(trimheight)*ratioP+1*m)+" }")

        blockcontainer = p.open_pdi_document(pdffiles[0], "")
        if blockcontainer == -1:
                raise PDFlibException("Error:pwidth " + p.get_errmsg())    
        pages = p.open_pdi_page(blockcontainer, i+1, "")

        shiftw=((pwidthx-trimwidth)/2*ratioP)-m        
        print("shihtw:"+str(shiftw)+" \n")
        shifth=((pheightx-trimheight)/2*ratioP)-m        
        print("shihth:"+str(shifth)+" \n")
        
        #optlist="boxsize={"+str(pwidth+2*m)+" "+str(pheight+2*m)+"} position=center fitmethod=clip"
        optlist="boxsize={"+str(pwidthx*ratioP)+" "+str(pheightx*ratioP)+"} position=center fitmethod=meet"

        p.fit_pdi_page(pages,    -shiftw, -shifth, optlist); ############left end

        ######################################################################################################
        p.end_page_ext("")
        p.end_document("")

###########################################################################################################
except PDFlibException:
    print("PDFlib exception occurred:\n[%d] %s: %s" %
	((p.get_errnum()), p.get_apiname(),  p.get_errmsg()))
    print_tb(exc_info()[2])

except Exception:
    print("Exception occurred: %s" % (exc_info()[0]))
    print_tb(exc_info()[2])
finally:
    p.delete()


source = 'C:/adfs/pTrans3'
destination = 'C:/adfs/hold'
import shutil
for file in os.listdir(source):
    #print file # testing
    shutil.move(source+"/"+pdffiles[0], destination+"/"+pdffiles[0])

