archivos PDF con datos de una columna especial en una base de datos basada en tablas (como Excel) + imágenes

archivos PDF con datos de una columna especial en una base de datos basada en tablas (como Excel) + imágenes

Soy bastante nuevo en tex, pero ahora tengo que:

  • compilar varios archivos pdf con el mismo diseño(no es tan importante si están separados físicamente en diferentes archivos o simplemente como páginas en un solo archivo)
  • de 1 columna de datos de una base de datos basada en tablas(por el momento una hoja de Excel con su columna: inglés + alemán, que contiene definiciones, + imagen) (los datos los completa otra persona y cambian cada cierto tiempo)
  • yconectado con una imagen(de lo que se explica en el texto, entonces ambas columnas con la misma imagen en la tercera columna)

Buscando entre las preguntas aquí encontré varias soluciones que funcionan con archivos .csv, fotones y luatex (como:Importe datos de una hoja de cálculo a látex y cree múltiples archivos pdf para cada fila en LaTeX ) - todas las cosas de las que nunca había oído hablar;) pero estoy dispuesto a aprender. Y los resolveré según sea necesario. El problema es que no sé por dónde empezar. Y además tengo la sensación de que la imagen será un problema, ya que las imágenes no están incluidas en las celdas de Excel, por lo que no se leerán de ninguna manera. Entonces, probablemente tenga que usar una herramienta completamente diferente para la mesa en primer lugar. Y entonces, de todos modos, habría una manera totalmente diferente.

Entonces mis preguntas:

  1. qué programa se debe usar para generar la tabla (alguien más lo hará, por lo que no debería ser demasiado complicado ni costoso para ellos, si es posible, algo fácil y común como Excel sería genial)
  2. y luego, por supuesto, cómo empezar a incorporarlo al látex. No es necesario que me vuelvas a dar una respuesta ya dada. Estoy dispuesto a leer las preguntas y respuestas que ya existen aquí, pero hay muchas y con mi conocimiento limitado. Al respecto, sería fantástico tener una pista sobre cuál de las respuestas dadas probar.
  3. y aún debería ser posible cambiar el diseño del pdf final en el archivo .tex, pero supongo que funcionaría con todas las soluciones.

Aquí un boceto de cómo podría verse uno de los PDF al final:tarjeta1 tabla de ejemplo:hoja de Excel

Espero poder aclarar mis problemas. ¡muchas gracias por tu ayuda!

Respuesta1

Encontré una solución utilizando el paquete datatool. Aún no es perfecto, pero probablemente tengas algunas ideas para mejorar.

Tengo todas las fotos en una carpeta y uso

ls /b *.jpeg >pix.csv 

para generar un .csv de todas las imágenes. (trabajando en una Mac)

Luego cargo eso y la columna que quiero usar (antes de guardarla como .csv) en mi .tex y los fusiono.

Por fin ejecuto un tikzpicture para cada fila para generar las tarjetas individuales.

\documentclass{standalone}

\usepackage{graphicx}
\usepackage{tikz}
\usepackage{datatool}

\DTLloaddb[
  noheader,
  keys={name}
  ]{pix}{pix.csv}

 \DTLloaddb[
  noheader,
  keys={title}
  ]{text}{text.csv}

\begin{document}

\newcount\rowIdx

\dtlforcolumn{\secondC}{text}{title}%\dtlforcolumn{?cs?}{?db?}{?key?}{?body?}
{
  % iterate through each entry in the `title' column of the text database
  \advance\rowIdx by 1\relax
  % get corresponding row of pix database
  \dtlgetrow{pix}{\rowIdx}%
  % append to current row (this new column is assigned the key `title')
  \dtlappendentrytocurrentrow{title}{\secondC}%\dtlappendentrytocurrentrow{?key?}{?value?}
  % update first database
  \dtlrecombine
}


\DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
    [\not\DTLiseq{\Name}{main.tex}]  
    {pix}{\Name=name,\Title=title}{
  \newpage
    \begin{tikzpicture}[remember picture,overlay]

        \node[anchor=south,inner sep=0pt] (icon) at (7.4,-8.5){\includegraphics[height=5cm]{\Name}}; %inserting the picture according to name

        \node[inner sep=0,text width=\paperwidth,align=flush center] (text) at (7.4,-9){\Title};

    \end{tikzpicture}  
 }

\end{document}

hay algunos errores, en la línea del \end{tikzpicture} falta un \endgroup y un } y luego al final dice que hay muchos } pero no entiendo por qué. Y si escribo \endgroup en mi .tex dice que es demasiado. Funciona así, ya que las partes que faltan se agregan automáticamente, pero siempre tengo que presionar Intro para aceptar los cambios. Probablemente alguno de ustedes pueda ayudar aquí.

¡muchas gracias!

Respuesta2

la respuesta anterior funciona bien para un solo idioma, pero aquí está mi solución para dos idiomas (con subtítulos), como se pide en la pregunta y una opción de nivel. La persona que hace la tabla tiene que escribir en la última columna el nombre del archivo de la imagen en lugar de poner la imagen y luego funciona bien.

\documentclass[english]{article}

\usepackage[paperwidth=11cm, paperheight=10.4cm]{geometry}

\usepackage{graphicx}
\usepackage{tikz}
\graphicspath{{../pix/}}
\usepackage{datatool}
\usepackage{etoolbox}

\newbool{GER}
%\booltrue{GER} % if german version activate
\newcommand{\Levelgew}{1} % say which level (if you say level 2 it will print level1+2)

\DTLsetseparator{;}
\DTLloaddb[keys={level,eng,engunderline,ger,gerunderline,name}]{cards}{_scrumflowcards.csv} %\DTLloadrawdb[?options?]{?db name?}{?filename?} 



\begin{document}
\ifbool{GER}
{
    \DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
        [\not\DTLisgt{\Level}{\Levelgew}]
        {cards}{\Level=level,\Title=ger,\Underline=gerunderline,\Name=name}
        {
            \clearpage%start a new page for each row
            \thispagestyle{empty}%get rid of the pagenumbers

            \begin{tikzpicture}[remember picture,overlay]

                \node[yshift=-2.2cm,anchor=south] (icon) at (current page.center) {\includegraphics[height=6cm]{\Name}};

                \node[yshift=-3.5cm,text width=8cm,align=flush center] (text) at (current page.center){\huge\bfseries\sffamily\Title\\[15pt]
            \LARGE \Underline};

            \end{tikzpicture}
        }

}{
    \DTLforeach*%\DTLforeach*[?condition?]{?db name?}{?assign list?}{?text?}
        [\not\DTLisgt{\Level}{\Levelgew}]
        {cards}{\Level=level,\Title=eng,\Underline=engunderline,\Name=name}
        {
            \clearpage%start a new page for each row
            \thispagestyle{empty}%get rid of the pagenumbers

            \begin{tikzpicture}[remember picture,overlay]

                \node[yshift=-2.2cm,anchor=south] (icon) at (current page.center) {\includegraphics[height=6cm]{\Name}};

                \node[yshift=-3.5cm,text width=8cm,align=flush center] (text) at (current page.center){\huge\bfseries\sffamily\Title\\[15pt]
            \LARGE \Underline};

            \end{tikzpicture}
        }
}
\end{document}

al final utilicé el paquete pgf (\pgfpagesphysicalpageoptions y \pgfpageslogicpageoptions) para imprimir varias tarjetas/páginas en un papel/hoja a4.

información relacionada