나는 (많은 노력 끝에) 박사 학위를 마쳤습니다. 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
-> 유효 - 완료 & 행복
제 경우에는 오류가 있어서 직접 변환할 수 없었습니다. 이유는 모르겠지만 가능한 유일한 방법은 위에서 언급한 방법뿐이었습니다.
pdfx
LaTeX에서 패키지 사용
- 최신
pdfx
패키지를 사용할 수 있는지 확인하세요. 이를 위해kpsewhere pdfx.sty
Linux의 기능을 사용하여 파일 경로를 얻고 버전을 확인할 수 있습니다(편집기로 열림). 내 경우에는 오래된 패키지가 있어서 패키지를 업데이트해야 했습니다(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 또는 패키지에 일반적으로 몇 가지 문제가 있음을 알려주었습니다 .veraPDF
pdfx
pdfx
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). - 그러나 패키지에 대해 설정하는 모든 설정/옵션은
pdfx
PDF 버전 1.4로 이어집니다. PDF/A-2의 사양이 되어 있어도. 실제로 PDF 버전 1.7이 제공되어야 합니다. - 여기서 문제는
epstopdf
LaTeX 문서가 버전 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
.
문제를 제거하려면 패키지를 해킹하여 pdfx
PDF의 올바른 버전을 설정해야 합니다. 이렇게 하려면 다시 를 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
저자가 문서에 나열되지 않은 가능한 옵션을 많이 가지고 있다는 것을 깨달았습니다. 그러나 옵션은 (내가 아는 한) 아무 것도 영향을 미치지 않습니다. 예를 들어 pdf16
PDF 버전을 1.6으로 변경하는 옵션입니다. 그런데 hyperref
위에 적힌 코드 스니핑은 \thepdfminorversion
어차피 변수가 4로 바뀌는 부분이라는 걸 깨달았습니다 . 나는 그것을 제작자에게 썼고 피드백을 받기를 희망합니다. 아마도 여러분 중 누군가가 관심이 있고 더 많은 것을 알아낼 수 있을 것입니다(저는 LaTeX 구문에 익숙하지 않습니다).
베라PDF
.veraPDF application
- 한편으로는 오류를 분석하는 과정에서 문제의 원인을 파악할 수 있었습니다.
- 반면에 규칙 설명은 (적어도 나에게는) 많은 정보를 제공하지 않습니다. 특히 다른 PDF 버전(최종 PDF 파일 v1.4 및 EPS 변환 PDF v1.5)을 기반으로 발생한 오류는 버전이 다르고 PDF가 다르다는 직접적인 힌트를 제공하지 않았습니다. 그런데 규칙 6.4-1(https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-64-1) 및 규칙 6.4-2 (https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-64-2).
preflight
나는 -> 잘못된 PDF 버전과 내 사진에 버전 1.4 및 1.5에 대한 내용을 명시한 LaTeX의 출력을 기반으로 PDF 버전에 대한 아이디어를 얻었습니다 .
답변이 길어져서 죄송합니다. 하지만 누군가가 그로부터 새로운 정보를 얻어 문제를 해결할 수 있을 것입니다. 제작진으로부터 피드백을 받으면 댓글로 달겠습니다.
마지막으로: pdfx
이제 내 박사 과정에서 매우 잘 작동합니다. 명제. 의견을 보내주셔서 감사합니다. 물론 사용한다면 lualatex
RobtAll이 설명하는 방식을 사용할 수 있을 것 같습니다. 훌륭한 포럼, 훌륭한 사람들! 감사합니다 토비
pdfx
반점
지금 나는 Ross Moore와 연락하고 있으며 그는 내가 수정한 것보다 더 적절한 패치를 나에게 보냈습니다. 현재 공식 저장소에 업데이트가 되지 않아 여기에 공유합니다.