Pergunta

Eu tenho um site em vários idiomas e precisa automatizar o processo de atualização textlayers em PSD-arquivos a partir de um arquivo CSV-fonte.

Eu sei que pode haver falhas no psp por causa de larguras mudado, mas de qualquer maneira ele iria ajudar muito para ter o texto dentro dos documentos.

Quais são as minhas opções?

EDIT:

Murmelschlurmel tem uma solução de trabalho. Aqui está o link para a documentação Adobe.

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

O formato do arquivo CSV não é tão bom: você precisa de uma coluna para cada variável. Eu esperaria uma linha para cada variável.

Ele funciona com trema (ä, ö etc)

EDIT 1:

Outra solução é usar com automatizar Photoshop. Isso é bom se você tem um par de modelos (botões) que precisam texto alterado. Aqui está o meu script em python que pode levá-lo startet.

Você precisa ter um arquivo do Excel com colunas: TEMPLATEfilename, TargetFileName, TargetFormat, Texto (Ou seja, template.psd, botão1, gif, NiceButton). A primeira linha da folha não é utilizado. O modelo de PSP deve ter apenas 1 textlayer e não pode ter 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)
Foi útil?

Solução

Você pode usar "Data Driven Design" para fazer isso. Há também um conceito de dados orientado projeto em ciência da computação, mas tanto quanto eu puder ver este não é não relacionada ao uso da palavra em Photoshop.

Aqui está como proceder:

Coloque sua imagem no Photoshop e definir suas variáveis ??com Imagem> Variáveis> Definir .

Em seguida, converter seu CSV para um formato Photoshop pode ler. Eu tive as melhores experiências com guia delimted texto .

Finalmente carregar o arquivo de texto no Photoshop com imagens> Variáveis> conjunto de dados e deixar Photoshop salvar todas as iterações.

Quando eu tentei isso em primeiro lugar, eu achei que o arquivo de ajuda do Photoshop não forneceu detalhes suficientes. Eu procurei na Internet para photoshop "conjunto de dados" e encontrei alguns bons tutoriais, por exemplo, esta de digitaltutors .

Outras dicas

Pode ser pouco fora muito, mas eu tenho usado servidor Adobe AlterCast / Grphics para lidar com exatamente o mesmo problema.

Além disso, se sua imagem GIF / JPG apenas texto, você pode usar Python + PIL (Python Imaging Library). Aqui está um exemplo de código (funciona no Windows OS com fontes Arial e Osaka instalados.)

#!/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")
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top