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 補丁 (23.02.2018)

今天我對使用 LaTeX 產生 PDF/A 檔案的主題進行了一些調查,並pdfx package找到了解決方案。實際上我將介紹兩個版本以及使用該應用程式進行的驗證檢查veraPDF。好吧,讓我們開始吧。最簡單的方法是使用 Acrobat Professional(如果可用)。


使用 Acrobat Professional

  • 將您的 LaTeX 檔案原樣編譯為 PDF
  • 在裝有 Adob​​e 軟體的電腦上開啟 PDF
  • 使用印表機列印文件Adobe PDF並選擇 PDF/A 選項
  • veraPDF用或preflight->檢查是否有效
  • 完成並快樂

就我而言,我無法直接轉換它,因為我遇到了一些錯誤。我不知道為什麼,但唯一可能的方法就是上面提到的方法。


pdfx在 LaTeX 中使用套件

  • 確保有最新的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) 時,preflightveraPDF給了我一個有效的 PDF/A 結果,而使用 LaTeX 和pdfx套件時,我失敗了許多檢查。然而,這告訴我, pdfxLaTeX 編寫的 PDF 套件或總體上存在一些問題。

veraPDF在使用和驗證 LaTeX 生成的 PDF/A 文件時,我收到了一系列錯誤訊息preflight。一開始,我有超過 50 萬次失敗的檢查 ~ 543.000。大多數錯誤與未包含的配色方案有關(上面列表中的第 4 點)。這可以透過添加配色方案輕鬆解決並完成。

另一堆錯誤很難找出,並且與透明度數字和其他功能有關(現在我知道了)pdf 版本 1.4 不支援這些功能。在我的LaTeX專案中,有超過50個eps檔案使用該套件轉換為pdf epstopdf。這裡的問題始於pdfx該包引入的問題。我猜這是一個錯誤,我已經向創作者發送了一條訊息。

  • 無論如何,該pdfx套件都會將我們創建的 pdf 版本設定為版本 1.4,這對於 2005 年發布的 PDF/A-1 標準是正確的;參見ISO 190005-1(https://en.wikipedia.org/wiki/PDF/A)。
  • 但是,為套件設定的任何設定/選項pdfx都將產生 pdf 版本 1.4。即使完成了 PDF/A-2 的規格。事實上,這應該給出 pdf 版本 1.7。
  • 這裡問題就開始了,因為epstopdf產生的 pdf 版本為 1.5,而 LaTeX 文件的版本為 1.4。這是不相容的,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 it):

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檢查它)。使用Acrobat Pro -> preflightPDF/A 文件重新檢查 pdf 是否有效後,我很高興。對於該veraPDF工具,我仍然收到 1 個與字體程式相關的錯誤Rule 6.3.4-1https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Part-1-rules#rule-634-1)但我不知道它告訴我什麼。歡迎任何評論。

在此輸入影像描述


pdfx包裹

在我對該pdfx軟體包的調查過程中,我意識到作者有很多可能的選項,但沒有在文件中列出。然而,這些選項不會影響任何東西(據我所知);例如,pdf16應將 pdf 版本變更為 1.6 的選項。然而,我意識到上面給出的程式碼片段是變數在任何情況下都更改為 4 的hyperref部分。\thepdfminorversion我把它寫給了創作者,希望得到一些回饋——也許你們中的一個人也感興趣並且可以了解更多(我對 LaTeX 語法不太熟悉)。


維拉PDF

只是一些註解veraPDF application

我根據preflight-> 錯誤的 PDF 版本和 LaTeX 的輸出得到了 PDF 版本的想法,其中使用我的圖片說明了一些版本 1.4 和 1.5 的內容。

抱歉,現在的答案很長,但也許有人可以從中獲得一些新資訊並可以解決問題。如果我能從創作者那裡得到任何回饋,我會發表評論

最後:pdfx現在對我的博士學位來說效果很好。論文。感謝您的評論,當然,如果您使用lualatex我想您可以使用 RobtAll 解釋的方式。很棒的論壇,很棒的人!謝謝托比


pdfx修補

現在我正在與羅斯摩爾聯繫,他給我發送了一些比我的修復更合適的補丁。目前它還沒有更新到官方存儲庫,所以我在這裡分享它。

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

相關內容