Terminei (depois de muito trabalho) meu doutorado. tese em LaTeX. No entanto, tive um grande problema depois de ler que precisava enviar o PDF como arquivo PDF/A. Primeiramente tentei convertê-lo usando o software Acrobat Professional (foi quem fez isso), mas não conseguimos. Então dei um passo atrás e tentei construir o arquivo PDF/A via LaTeX e me deparei com o pacote pdfx. Ao usar este pacote, não posso usá-lo usepackage[utf8]{inputenc}
porque é uma dependência do pdfx
pacote. Porém, depois de alterar alguns comandos próprios e outros operadores matemáticos como \bullet
, que já estão em uso ou não existem mais, tive o problema de que o trema ä ü ö ß
não está mais funcionando.
Atualizaresse problema estava relacionado a uma versão não atualizada do pdfx package
. Após a atualização, o \usepackage[utf8]{inputenc}
pode ser usado e tudo funciona bem.
O segundo problema é que o PDF gerado não está em conformidade com PDF/A. preflight and veraPDF
deu um monte de erros que não consigo resolver. Alguma ideia.
Espero que alguém possa me dar alguns conselhos.
Desde já agradeço Tobi
Responder1
Atualização: Patch para pdfx adicionado na parte inferior (23/02/2018)
Hoje fiz algumas investigações sobre o tópico de geração de arquivos PDF/A com LaTeX e pdfx package
descobri a solução. Na verdade vou apresentar duas versões e a verificação de validação através da veraPDF
aplicação. Ok, vamos começar. A maneira mais fácil é usar o Acrobat Professional (se estiver disponível).
Usando o Acrobat Professional
- Compile seu arquivo LaTeX como está em um PDF
- Abra o PDF no computador com o software Adobe instalado
- Imprima o arquivo usando a
Adobe PDF
impressora e escolha a opção PDF/A - Verifique com
veraPDF
oupreflight
-> válido - Feito e feliz
No meu caso não consegui convertê-lo diretamente porque recebi alguns erros. Não tenho ideia do porquê, mas a única maneira possível era a mencionada acima.
Usando pdfx
pacote em LaTeX
- Certifique-se de ter o
pdfx
pacote mais recente disponível. Para isso você pode simplesmente usar akpsewhere pdfx.sty
função no Linux para obter o caminho do arquivo e verificar a versão (abri-lo com um editor). No meu caso eu tinha um pacote mais antigo e tive que atualizar o pacote (https://ctan.org/pkg/pdfx?lang=en) - Todas as informações são fornecidas na documentação, bem como em outras informações, como
how to add the meta keywords
.
Por exemplo, adicionei um novo arquivo na primeira posição usando a input
função (atenção: antes da definição da classe do documento).
\input{Pre/Pre_MetaData}
\documentclass[...]
\input{Pre/Pre_Packages}
\input{Pre/Pre_Settings}
enquanto no Pre_MetaData
arquivo encontrará este tipo de código (que pode ser estendido conforme a documentação do pdfx
pacote:
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
\begin{filecontents*}{\jobname.xmpdata}
\Title{Your Title of the work}
\Author{Tobias Holzmann\sep And Others}
\Keywords{Your\sep Keywords\sep}
\Publisher{...}
\Copyright{...}
\end{filecontents*}
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
Se alguém estiver usando o pdfx
pacote no final do trabalho (quero dizer, você escreveu um livro ou tese e percebeu que precisa construir um arquivo PDF/A), pode acontecer que você tenha que fazer uma solução alternativa com os próprios comandos gerados. Portanto, recomendo a todos que sabem diretamente que deve ser um arquivo PDF/A que comecem a incluir diretamente o arquivo pdfx package
. Além disso - como está indicado na documentação - é uma boa ideia carregar esse pacote na primeira posição. Depois disso, você pode recompilar o documento e o PDF/A pdf será gerado. Resumindo:
- Certifique-se de ter o
pdfx
pacote mais recente instalado - Inclua os metadados logo no início (antes do início da classe do documento)
- Inclua o
pdfx
pacote em primeiro lugar (leia também a lista de dependências: por exemplo, ohyperref
pacote não precisa mais ser incluído pelo usuário porquepdfx
está sendo carregado...) - Adicione o esquema de cores ao seu projeto LaTeX (você encontrará um nos arquivos fonte ou aquihttp://www.color.org/iccprofile.xalter)
- Remova problemas de comandos próprios definidos (se houver)
- Compile-o com pdflatex (eu fiz dessa forma)
- Verifique
veraPDF
e você provavelmente verá vários erros que são resumidos e resolvidos abaixo - Se estiver tudo bem, você terminou, parabéns :)
Erros com veraPDF
epdfx
Percebi isso ao usar o primeiro método ( Acrobat Pro
) preflight
e veraPDF
me deu um resultado PDF/A válido, enquanto com o LaTeX e o pdfx
pacote falhei em muitas verificações. No entanto, isso me disse que existem alguns problemas com o pdfx
pacote ou em geral com o PDF escrito em LaTeX.
Recebi uma série de mensagens de erro durante a verificação do arquivo PDF/A gerado pelo LaTeX usando veraPDF
e preflight
. No início eu tinha mais de meio milhão de verificações falhadas ~ 543.000. A maioria dos erros estava relacionada a um esquema de cores não incluído (ponto 4 na lista acima). Isso pode ser facilmente resolvido adicionando o esquema de cores e pronto.
Outro monte de erros foram difíceis de descobrir e estavam relacionados a figuras de transparência e outros recursos que (agora eu sei) não são suportados pela versão 1.4 do pdf. No meu projeto LaTeX, existem mais de 50 arquivos eps que são convertidos em PDFs usando o epstopdf
pacote. Aqui o problema começa com pdfx
base em um problema introduzido por esse pacote. Acho que é um bug e já enviei uma mensagem aos criadores.
- Em qualquer caso, o
pdfx
pacote definirá a versão pdf que criamos para a versão 1.4, que é correta para o padrão PDF/A-1 publicado em 2005; cf. ISO 190005-1 (https://en.wikipedia.org/wiki/PDF/A). - No entanto, qualquer configuração/opção definida para o
pdfx
pacote levará a uma versão pdf 1.4. Mesmo que uma especificação de PDF/A-2 seja feita. Isso deve dar, de fato, uma versão 1.7 em pdf. - E aqui começa o problema porque
epstopdf
gera pdf's que são da versão pdf 1.5 enquanto o documento LaTeX estará na versão 1.4. Isso não é compatível e os PDFs gráficos da versão 1.5 possuem recursos que não são suportados na versão 1.4 - Esta discrepância nas versões leva a muitos erros na
veraPDF
opacidade e transparência das figuras, especialmente noca
valor, etc.https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules)
A propósito, você pode descobrir a versão de um pdf no Linux usando o pdfinfo myPDF.pdf
comando.
Para se livrar do problema, é necessário hackear o pdfx
pacote para definir a versão correta do pdf. Para fazer isso, é necessário encontrar o caminho para o pdfx.sty
arquivo usando kpsewhere pdfx.sty
novamente e abri-lo usando um editor de sua preferência (sudo it):
sudo vim /usr/share/texlive/texmf-dist/tex/latex/pdfx/pdfx.sty
Procure esse comentário - linha 750 (na versão v1.5.84)
%% Hyperref options for PDF/A and PDF/E
E adicione, depois do hyperref
material, a seguinte linha enquanto altera a versão de acordo com a versão que você gostaria de ter para o seu pdf.
\thepdfminorversion=6 % Corresponds to version 1.6
Para expressar melhor a posição no meu caso, adicionei-a à linha 815:
\ifpdfx@x
\@ifpackageloaded{hyperref}{%
\ifxetex
\expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@xetex}
\else\ifluatex
\expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@luatex}
\else
\expandafter\hypersetup\expandafter{\pdfx@pdfX@opts@pdftex}
\fi\fi
}{%
\ifxetex
\expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@xetex]{hyperref}
\else\ifluatex
\expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@luatex]{hyperref}
\else
\expandafter\RequirePackage\expandafter[\pdfx@pdfX@opts@pdftex]{hyperref}
\fi\fi
}%
\else
\ifpdfx@e
\@ifpackageloaded{hyperref}{%
\ifxetex
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}
\else\ifluatex
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}
\else
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}
\fi\fi
}{%
\ifxetex
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
\else\ifluatex
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
\else
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
\fi\fi
}%
\else % generating PDF/A or ...
\@ifpackageloaded{hyperref}{%
\ifxetex
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@xetex}%
\else\ifluatex
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@luatex}%
\else
\expandafter\hypersetup\expandafter{\pdfx@pdfAE@opts@pdftex}%
\fi\fi
}{%
\ifxetex
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@xetex]{hyperref}
\else\ifluatex
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@luatex]{hyperref}
\else
\expandafter\RequirePackage\expandafter[\pdfx@pdfAE@opts@pdftex]{hyperref}
\fi\fi
}%
\fi\fi
\hypersetup{pdfencoding=auto}% unicode
\expandafter\ifx\csname KV@Hyp@psdextra\endcsname\relax\else
\hypersetup{psdextra}
\fi
\thepdfminorversion=6 % Corresponds to version 1.6
Após isso salve o arquivo e atualize o ambiente TeX: sudo texhash
. Feito. Agora recompile seu pdf e você obterá a versão em pdf que precisa (use pdfinfo
para verificar). Depois de verificar novamente o pdf usando Acrobat Pro -> preflight
o arquivo PDF/A era válido e fiquei feliz. Para a veraPDF
ferramenta, ainda recebo 1 erro relacionado a programas de fontes Rule 6.3.4-1
(https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-634-1) mas não tenho ideia do que isso me diz. Qualquer comentário é bem-vindo aqui.
pdfx
pacote
Durante minha investigação sobre o pdfx
pacote, percebi que os autores têm várias opções possíveis que não estão listadas na documentação. Porém, as opções não influenciam em nada (até onde entendi); por exemplo, a pdf16
opção que deve alterar a versão do pdf para 1.6. Porém, percebi que o hyperref
código recortado, fornecido acima, é a parte em que a variável \thepdfminorversion
é alterada para 4 em qualquer caso. Escrevi para os criadores e espero receber algum feedback - talvez um de vocês também esteja interessado e possa descobrir mais (não estou muito familiarizado com a sintaxe do LaTeX).
veraPDF
Apenas algumas notas para o veraPDF application
.
- Por um lado, durante a análise dos erros, consegui descobrir a origem do problema
- Por outro lado, a descrição das Regras não dá muita informação (pelo menos para mim). Especialmente os erros que recebi com base nas diferentes versões do PDF (o arquivo PDF final v1.4 e os PDFs convertidos em EPS v1.5) não me deram a dica direta de que tenho PDFs diferentes com versões diferentes. A propósito, era a Regra 6.4-1 (https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-64-1) e Regra 6.4-2 (https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-64-2).
Tive a ideia da versão PDF com base na saída de preflight
-> versão errada do PDF e LaTeX que afirmava algumas coisas da versão 1.4 e 1.5 com minhas fotos.
Desculpe que agora seja uma resposta longa, mas talvez alguém possa obter novas informações com isso e resolver o problema. Se eu receber algum feedback dos criadores, farei um comentário
Finalmente: pdfx
funciona muito bem agora para meu doutorado. tese. Obrigado pelos comentários e claro, se você usar, lualatex
acho que pode usar a forma como RobtAll estava explicando. Ótimo fórum, ótimas pessoas! Obrigado Tobi
pdfx
correção
No momento estou em contato com Ross Moore e ele me enviou um patch que é mais apropriado do que a minha correção. Ele não está atualizado no repositório oficial no momento, então compartilho-o aqui.