pdfx 패키지가 veraPDF와 함께 실패하고 프리플라이트가 특수 문자(UTF-8은 사용되지 않음)를 지원하지 않습니다.

pdfx 패키지가 veraPDF와 함께 실패하고 프리플라이트가 특수 문자(UTF-8은 사용되지 않음)를 지원하지 않습니다.

나는 (많은 노력 끝에) 박사 학위를 마쳤습니다. LaTeX로 논문을 작성했습니다. 그런데 PDF를 PDF/A 파일로 제출해야 한다는 내용을 읽고 큰 문제가 생겼습니다. 우선 Acrobat Professional 소프트웨어를 사용하여 변환을 시도했지만(IT에서 수행) 실패했습니다. 그래서 저는 한발 물러서서 LaTeX를 통해 PDF/A 파일을 구축하려고 시도했고 pdfx 패키지를 발견했습니다. 이 패키지를 사용하는 동안 패키지 usepackage[utf8]{inputenc}의 종속성이라는 사실 때문에 사용할 수 없습니다 pdfx. 그러나 이미 사용 중이거나 더 이상 존재하지 않는 몇 가지 자체 명령 및 기타 수학 연산자를 변경한 후 움라우트가 더 이상 작동하지 않는다는 \bullet문제가 발생했습니다 .ä ü ö ß

업데이트이 문제는 업데이트되지 않은 버전의 pdfx package. 업데이트 후에는 \usepackage[utf8]{inputenc}사용할 수 있으며 모든 것이 잘 작동합니다.


두 번째 문제는 생성된 PDF가 PDF/A 규격이 아니라는 것입니다. preflight and veraPDF처리할 수 없는 오류가 많이 발생했습니다. 어떤 아이디어라도 가능합니다.


누군가가 나에게 조언을 해줄 수 있기를 바랍니다.

미리 감사드립니다 토비

답변1

업데이트: 하단에 pdfx용 패치 추가됨 (2018.02.23)

오늘 저는 LaTeX와 PDF/A 파일 생성 주제에 대해 조사하고 pdfx package해결책을 찾았습니다. 실제로 두 가지 버전을 제시하고 애플리케이션을 사용하여 유효성 검사를 진행하겠습니다 veraPDF. 좋아, 시작해 보자. 가장 쉬운 방법은 Acrobat Professional(사용 가능한 경우)을 사용하는 것입니다.


아크로뱃 프로페셔널 사용

  • LaTeX 파일을 있는 그대로 PDF로 컴파일
  • Adobe 소프트웨어가 설치된 컴퓨터에서 PDF를 엽니다.
  • 프린터를 사용하여 파일을 인쇄 Adobe PDF하고 PDF/A 옵션을 선택하세요.
  • 확인 veraPDF또는 preflight-> 유효
  • 완료 & 행복

제 경우에는 오류가 있어서 직접 변환할 수 없었습니다. 이유는 모르겠지만 가능한 유일한 방법은 위에서 언급한 방법뿐이었습니다.


pdfxLaTeX에서 패키지 사용

  • 최신 pdfx패키지를 사용할 수 있는지 확인하세요. 이를 위해 kpsewhere pdfx.styLinux의 기능을 사용하여 파일 경로를 얻고 버전을 확인할 수 있습니다(편집기로 열림). 내 경우에는 오래된 패키지가 있어서 패키지를 업데이트해야 했습니다(https://ctan.org/pkg/pdfx?lang=en)
  • 모든 정보는 문서에 제공되며 다음과 같은 추가 정보도 제공됩니다 how to add the meta keywords.

예를 들어 함수를 사용하여 첫 번째 위치에 새 파일을 추가했습니다 input(주의: 문서 클래스 정의 전).

\input{Pre/Pre_MetaData}
\documentclass[...]
\input{Pre/Pre_Packages}
\input{Pre/Pre_Settings}

파일 에서 Pre_MetaData이러한 종류의 코드를 찾을 수 있습니다(패키지 문서에 따라 확장 가능 pdfx:

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

\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*}

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

작업이 끝날 때 패키지를 사용하는 경우 pdfx(책이나 논문을 작성하고 PDF/A 파일을 작성해야 한다는 것을 의미함) 자체 생성된 명령에 대한 해결 방법을 만들어야 하는 경우가 발생할 수 있습니다. 그래서 나는 그것이 PDF/A 파일이어야 한다는 것을 직접적으로 아는 모든 사람들에게 pdfx package. 또한 - 문서에 명시된 대로 - 해당 패키지를 첫 번째 위치에 로드하는 것이 좋습니다. 그런 다음 문서를 다시 컴파일하면 PDF/A pdf가 생성됩니다. 합산:

  • 최신 pdfx패키지가 설치되어 있는지 확인하십시오.
  • 시작 부분(문서 클래스가 시작되기 전)에 바로 메타데이터를 포함합니다.
  • pdfx처음에 패키지를 포함시키십시오 (종속성 목록도 읽으십시오. 예를 들어 패키지 를 로드하는 중이므로 hyperref사용자는 더 이상 패키지를 포함할 필요가 없습니다 ...)pdfx
  • LaTeX 프로젝트에 색 구성표를 추가하세요(소스 파일이나 여기에서 찾을 수 있습니다).http://www.color.org/iccprofile.xalter)
  • 자신이 정의한 명령의 문제 제거(있는 경우)
  • pdflatex로 컴파일(저는 그렇게 했습니다)
  • 이를 확인하면 veraPDF아래에 요약되어 해결된 여러 오류가 표시될 것입니다.
  • 모든 것이 괜찮다면 완료된 것입니다. 축하합니다 :)

veraPDF및 오류pdfx

나는 첫 번째 방법( Acrobat Pro) 을 사용하는 동안 유효한 PDF/A 결과를 얻었지만 LaTeX 및 패키지를 사용하는 동안 preflight많은 검사에 실패했다는 것을 깨달았습니다. 그러나 이는 LaTeX로 작성된 PDF 또는 패키지에 일반적으로 몇 가지 문제가 있음을 알려주었습니다 .veraPDFpdfxpdfx

veraPDF및 를 사용하여 LaTeX에서 생성된 PDF/A 파일을 확인하는 동안 다양한 오류 메시지를 받았습니다 preflight. 처음에는 543,000개 이상의 실패한 수표가 있었습니다. 대부분의 오류는 포함되지 않은 색 구성표(위 목록의 4번 지점)와 관련이 있었습니다. 이 문제는 색 구성표를 추가하여 쉽게 해결할 수 있습니다.

또 다른 오류는 파악하기 까다로웠으며 PDF 버전 1.4에서 지원되지 않는 투명도 수치 및 기타 기능과 관련이 있었습니다. 내 LaTeX 프로젝트에는 패키지를 사용하여 PDF로 변환되는 50개 이상의 EPS 파일이 있습니다 epstopdf. 여기서 문제는 pdfx해당 패키지에서 발생한 문제를 기반으로 시작됩니다. 버그인 것 같아 이미 제작자에게 메시지를 보냈습니다.

  • 어쨌든pdfx 패키지는 우리가 만든 PDF 버전을 2005년에 출판된 PDF/A-1 표준에 맞는 버전 1.4로 설정합니다. 참조. ISO 190005-1 (https://en.wikipedia.org/wiki/PDF/A).
  • 그러나 패키지에 대해 설정하는 모든 설정/옵션은 pdfxPDF 버전 1.4로 이어집니다. PDF/A-2의 사양이 되어 있어도. 실제로 PDF 버전 1.7이 제공되어야 합니다.
  • 여기서 문제는 epstopdfLaTeX 문서가 버전 1.4에 있는 반면 PDF 버전 1.5인 PDF를 생성하기 때문에 시작됩니다. 이는 호환되지 않으며 버전 1.5의 그래픽 PDF에는 버전 1.4에서 지원되지 않는 기능이 있습니다.
  • veraPDF이러한 버전의 불일치로 인해 수치의 불투명도 및 투명도, 특히 값 등에서 많은 오류가 발생합니다 ca.https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules)

그건 그렇고, 명령을 사용하여 Linux에서 PDF 버전을 알아낼 수 있습니다 pdfinfo myPDF.pdf.

문제를 제거하려면 패키지를 해킹하여 pdfxPDF의 올바른 버전을 설정해야 합니다. 이렇게 하려면 다시 를 pdfx.sty사용하여 파일 경로를 찾은 다음 kpsewhere pdfx.sty원하는 편집기(sudo)를 사용하여 파일을 열어야 합니다.

sudo vim /usr/share/texlive/texmf-dist/tex/latex/pdfx/pdfx.sty

해당 댓글 검색 - 750행(버전 v1.5.84)

%% Hyperref options for PDF/A and PDF/E

hyperref그리고 PDF에 원하는 버전에 따라 버전을 변경하면서 내용 뒤에 다음 줄을 추가하세요 .

\thepdfminorversion=6  % Corresponds to version 1.6

내 경우의 입장을 더 잘 설명하기 위해 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

그런 다음 파일을 저장하고 TeX 환경을 업데이트합니다 sudo texhash. 완료. 이제 PDF를 다시 컴파일하면 필요한 PDF 버전을 얻을 수 있습니다( pdfinfo확인하는 데 사용). PDF/A 파일을 사용하여 PDF를 다시 확인한 결과 Acrobat Pro -> preflight유효했고 기뻤습니다. 도구 의 경우 veraPDF여전히 글꼴 프로그램과 관련된 오류 1개가 발생합니다 Rule 6.3.4-1(https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-634-1) 그러나 나는 그것이 나에게 무엇을 말하는지 전혀 모릅니다. 여기에는 어떤 의견이라도 환영합니다.

여기에 이미지 설명을 입력하세요


pdfx패키지

패키지 를 조사하는 동안 pdfx저자가 문서에 나열되지 않은 가능한 옵션을 많이 가지고 있다는 것을 깨달았습니다. 그러나 옵션은 (내가 아는 한) 아무 것도 영향을 미치지 않습니다. 예를 들어 pdf16PDF 버전을 1.6으로 변경하는 옵션입니다. 그런데 hyperref위에 적힌 코드 스니핑은 \thepdfminorversion어차피 변수가 4로 바뀌는 부분이라는 걸 깨달았습니다 . 나는 그것을 제작자에게 썼고 피드백을 받기를 희망합니다. 아마도 여러분 중 누군가가 관심이 있고 더 많은 것을 알아낼 수 있을 것입니다(저는 LaTeX 구문에 익숙하지 않습니다).


베라PDF

.veraPDF application

preflight나는 -> 잘못된 PDF 버전과 내 사진에 버전 1.4 및 1.5에 대한 내용을 명시한 LaTeX의 출력을 기반으로 PDF 버전에 대한 아이디어를 얻었습니다 .

답변이 길어져서 죄송합니다. 하지만 누군가가 그로부터 새로운 정보를 얻어 문제를 해결할 수 있을 것입니다. 제작진으로부터 피드백을 받으면 댓글로 달겠습니다.

마지막으로: pdfx이제 내 박사 과정에서 매우 잘 작동합니다. 명제. 의견을 보내주셔서 감사합니다. 물론 사용한다면 lualatexRobtAll이 설명하는 방식을 사용할 수 있을 것 같습니다. 훌륭한 포럼, 훌륭한 사람들! 감사합니다 토비


pdfx반점

지금 나는 Ross Moore와 연락하고 있으며 그는 내가 수정한 것보다 더 적절한 패치를 나에게 보냈습니다. 현재 공식 저장소에 업데이트가 되지 않아 여기에 공유합니다.

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

관련 정보