O pacote pdfx falha com veraPDF e o preflight não suporta caracteres especiais (UTF-8 não usado) e

O pacote pdfx falha com veraPDF e o preflight não suporta caracteres especiais (UTF-8 não usado) e

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 pdfxpacote. 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 veraPDFdeu 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 packagedescobri a solução. Na verdade vou apresentar duas versões e a verificação de validação através da veraPDFaplicaçã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 PDFimpressora e escolha a opção PDF/A
  • Verifique com veraPDFou preflight-> 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 pdfxpacote em LaTeX

  • Certifique-se de ter o pdfxpacote mais recente disponível. Para isso você pode simplesmente usar a kpsewhere pdfx.styfunçã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 inputfunçã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_MetaDataarquivo encontrará este tipo de código (que pode ser estendido conforme a documentação do pdfxpacote:

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % 

\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 pdfxpacote 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 pdfxpacote mais recente instalado
  • Inclua os metadados logo no início (antes do início da classe do documento)
  • Inclua o pdfxpacote em primeiro lugar (leia também a lista de dependências: por exemplo, o hyperrefpacote não precisa mais ser incluído pelo usuário porque pdfxestá 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 veraPDFe você provavelmente verá vários erros que são resumidos e resolvidos abaixo
  • Se estiver tudo bem, você terminou, parabéns :)

Erros com veraPDFepdfx

Percebi isso ao usar o primeiro método ( Acrobat Pro) preflighte veraPDFme deu um resultado PDF/A válido, enquanto com o LaTeX e o pdfxpacote falhei em muitas verificações. No entanto, isso me disse que existem alguns problemas com o pdfxpacote 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 veraPDFe 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 epstopdfpacote. Aqui o problema começa com pdfxbase em um problema introduzido por esse pacote. Acho que é um bug e já enviei uma mensagem aos criadores.

  • Em qualquer caso, o pdfxpacote 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 pdfxpacote 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 epstopdfgera 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 veraPDFopacidade e transparência das figuras, especialmente no cavalor, 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.pdfcomando.

Para se livrar do problema, é necessário hackear o pdfxpacote para definir a versão correta do pdf. Para fazer isso, é necessário encontrar o caminho para o pdfx.styarquivo usando kpsewhere pdfx.stynovamente 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 hyperrefmaterial, 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 pdfinfopara verificar). Depois de verificar novamente o pdf usando Acrobat Pro -> preflighto arquivo PDF/A era válido e fiquei feliz. Para a veraPDFferramenta, 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.

insira a descrição da imagem aqui


pdfxpacote

Durante minha investigação sobre o pdfxpacote, 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 pdf16opção que deve alterar a versão do pdf para 1.6. Porém, percebi que o hyperrefcó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.

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: pdfxfunciona muito bem agora para meu doutorado. tese. Obrigado pelos comentários e claro, se você usar, lualatexacho que pode usar a forma como RobtAll estava explicando. Ótimo fórum, ótimas pessoas! Obrigado Tobi


pdfxcorreçã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.

https://Holzmann-cfd.com/forums/pdfx.sty

informação relacionada