Domanda

Ho un sito web multilingua e bisogno di automatizzare il processo di aggiornamento textlayers in PSD-file da un file CSV-source.

So che ci potrebbero essere difetti nel psp a causa della larghezza cambiato, ma in ogni caso sarebbe di grande aiuto per avere il testo all'interno dei documenti.

Quali sono le opzioni?

EDIT:

Murmelschlurmel ha una soluzione di lavoro. Ecco il link alla documentazione di Adobe.

http: //livedocs.adobe. com / it_IT / Photoshop / 10,0 / help.html? content = WSfd1234e1c4b69f30ea53e41001031ab64-740d.html

Il formato del file CSV non è così bello: hai bisogno di una colonna per ogni variabile. Mi aspetterei una riga per ogni variabile.

Funziona con Umlaut (ä, ö etc)

EDIT 1:

Un'altra soluzione è quella di utilizzare COM per automatizzare Photoshop. Quello è bello se si dispone di un paio di modelli (pulsanti) che hanno bisogno di testo modificato. Ecco il mio script in python che potrebbe farti startet.

È necessario disporre di un file excel con colonne: TemplateFileName, TargetFileName, TargetFormat, Testo (Cioè template.psd, pulsante1, GIF, NiceButton). La prima riga del foglio non viene utilizzato. Il modello PSP dovrebbe avere solo 1 textlayer e non può avere layergroups.

import win32com.client
import xlrd 
spreadsheet = xlrd.open_workbook("text_buttons.xls")
sheet = spreadsheet.sheet_by_index(0)

psApp = win32com.client.Dispatch("Photoshop.Application")  
jpgSaveOptions = win32com.client.Dispatch("Photoshop.JPEGSaveOptions")  
jpgSaveOptions.EmbedColorProfile = True
jpgSaveOptions.FormatOptions = 1
jpgSaveOptions.Matte = 1
jpgSaveOptions.Quality = 1

gifSaveOptions = win32com.client.Dispatch("Photoshop.GIFSaveOptions")



for rowIndex in range(sheet.nrows):
    if(rowIndex > 0):
        template =  sheet.row(rowIndex)[0].value
        targetFile = sheet.row(rowIndex)[1].value
        targetFileFormat = sheet.row(rowIndex)[2].value
        textTranslated = sheet.row(rowIndex)[3].value
        psApp.Open(r"D:\Design\Produktion\%s" % template ) 
        doc = psApp.Application.ActiveDocument

        for layer in doc.Layers:  
            if (layer.Kind == 2):
                layer.TextItem.Contents = textTranslated
                if(targetFileFormat == "gif"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, gifSaveOptions,  True, 2)
                if(targetFileFormat == "jpg"):
                    doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, jpgSaveOptions,  True, 2)
È stato utile?

Soluzione

È possibile utilizzare "Data Driven Design" per fare questo. V'è anche un concetto di dati Driven Design in informatica, ma per quanto posso vedere questo non è non è legata all'uso della parola in Photoshop.

Ecco come procedere:

Carica l'immagine in Photoshop e definire le variabili con Immagine> Variabile> Definisci .

Quindi convertire il csv in un formato di Photoshop in grado di leggere. Ho avuto le migliori esperienze con testo delimted .

Infine caricare il file di testo in Photoshop con Immagini> Variabili> Data Set e lasciare che Photoshop salvare tutte le iterazioni.

Quando ho provato questa prima, ho scoperto che il file di aiuto di Photoshop non ha fornito dettagli sufficienti. Ho cercato su internet per photoshop "set di dati" e trovato alcuni buoni tutorial, per esempio questo uno da digitaltutors .

Altri suggerimenti

Potrebbe essere po 'fuori troppo, ma ho usato server di Adobe AlterCast / Grphics per gestire esattamente lo stesso problema.

Anche se la sua immagine GIF / JPG solo testo, è possibile utilizzare Python + PIL (Python Imaging Library). Ecco un esempio di codice (funziona su sistema operativo Windows con i caratteri Arial e Osaka installati.)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import ImageFont, ImageDraw, Image
#font = ImageFont.truetype("/usr/share/fonts/bitstream-vera/Vera.ttf", 24)
#font = ImageFont.truetype("futuratm.ttf", 18)
font = ImageFont.truetype("arial.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), "Test Images", font=font, fill="#000")
im.save("TestImg_EN.gif", "GIF")


font = ImageFont.truetype("osaka.ttf", 18)
im = Image.new("RGB", (365,20), "#fff")
draw = ImageDraw.Draw(im)
draw.text((0, 0), u"テストイメージ", font=font, fill="#000")
im.save("TestImg_JP.gif", "GIF")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top