Dans l'état initial, ArtRage n'a pas de tailles telles que A4 et B5 lors de la création d'un nouveau. Cependant, comme il est possible de l'ajouter en tant que taille personnalisée, ce n'est pas un gros problème en soi, mais c'était un peu gênant de l'ajouter un par un, j'ai donc écrit un script pour le générer automatiquement en tant que test. (L'opération a été confirmée avec ArtRage4 (4.0.4).)
L'utilisation est comme ça.
$ python artrage_papersize.py A4 A5 B5 --dpi 300
Dans l'exemple ci-dessus
Sera généré dans le dossier actuel.
Enregistrez les fichiers générés dans les tailles personnalisées d'ArtRage si nécessaire.
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]