Im Ausgangszustand hat ArtRage beim Erstellen eines neuen keine Größen wie A4 und B5. Da es jedoch möglich ist, es als benutzerdefinierte Größe hinzuzufügen, ist es an sich kein großes Problem, aber es war ein wenig mühsam, es einzeln hinzuzufügen. Deshalb habe ich ein Skript geschrieben, um es automatisch als Testversion zu generieren. (Der Vorgang wurde mit ArtRage4 (4.0.4) bestätigt.)
Die Verwendung ist wie folgt.
$ python artrage_papersize.py A4 A5 B5 --dpi 300
Im obigen Beispiel
Wird im aktuellen Ordner generiert.
Speichern Sie die generierten Dateien nach Bedarf in den benutzerdefinierten Größen von ArtRage.
artrage_paparsize.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# ------------------------------------------------------------------ import(s)
import sys
import struct
import argparse
# ------------------------------------------------------------------- param(s)
ARTRAGE_HEAD = u"ARSizePresetFileVersion-1\r\n"
PAPER_SIZE = {
"A" : { "X" : 841, "Y" : 1189 },
"B" : { "X" : 1030, "Y" : 1456 },
}
MM_INCH = 0.03937
# ---------------------------------------------------------------- function(s)
# ============================================================================
##
#
def calc_size( fX, fY ):
return( fY / 2, fX )
# ============================================================================
##
#
def export_file( strFilename, fX, fY, nDPI ):
with open( strFilename, "wb" ) as hFile:
hFile.write( ARTRAGE_HEAD.encode( "utf-16-le" ) )
hFile.write( struct.pack( "BBBBIIf", 0x01, 0x34, 0x00, 0xFF, 4, 0, fX ) )
hFile.write( struct.pack( "BBBBIIf", 0x02, 0x34, 0x00, 0xFF, 4, 0, fY ) )
hFile.write( struct.pack( "BBBBIIf", 0x01, 0x31, 0x00, 0xFF, 4, 0, nDPI ) )
hFile.write( struct.pack( "BBBBIII", 0x00, 0x34, 0x00, 0xFF, 4, 0, 0 ) )
hFile.close()
# ============================================================================
##
#
def main():
oCParser = argparse.ArgumentParser( description = "ArtRage Paper Generator" )
oCParser.add_argument(
"paper",
help = "Set paper (ex: A4, B5)",
nargs = "+"
)
oCParser.add_argument(
"-d", "--dpi",
help = "Set dpi",
default = 300
)
oCParams = oCParser.parse_args( sys.argv[ 1: ] )
for strPaper in oCParams.paper:
if( len( strPaper ) != 2 ):
continue
if( strPaper[ 0 ].upper() not in ( "A", "B" ) ):
continue
try:
strP = strPaper[ 0 ].upper()
nSize = int( strPaper[ 1 ] )
nDPI = oCParams.dpi
except:
continue
fX = PAPER_SIZE[ strP ][ "X" ] * nDPI * MM_INCH
fY = PAPER_SIZE[ strP ][ "Y" ] * nDPI * MM_INCH
for nSplitCount in range( nSize ):
fX, fY = calc_size( fX, fY )
strFilenameP = "%s%d Port.spr" % ( strP, nSize, )
strFilenameL = "%s%d Land.spr" % ( strP, nSize, )
export_file( strFilenameP, fX, fY, nDPI )
export_file( strFilenameL, fY, fX, nDPI )
if( __name__ == "__main__" ):
main()
# ---------------------------------------------------------------------- [EOF]