亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未拾取 PDF/A XMP 數據

未拾取 PDF/A XMP 數據

Go
慕的地8271018 2022-06-13 10:38:02
我正在嘗試為發票創建 PDF/A 文件。因此,我嘗試使用gofpdf庫為我的文件設置 XMP 標頭。設置標題似乎工作正常,但我的任何驗證器(如 exiftool 或驗證網站)都無法識別 XMP 數據。我正在使用這樣的 PDF 庫:您可以在此處找到可重現的示例。    pdf, customerNumber, err := GeneratePDF(type, id, user, nil)    if err != nil {        return err    }    pointerVal := reflect.ValueOf(pdf.Fpdf)    val := reflect.Indirect(pointerVal)    member := val.FieldByName("pdfVersion")    ptrToY := unsafe.Pointer(member.UnsafeAddr())    realPtrToY := (*string)(ptrToY)    *realPtrToY = "1.4"    pdf.SetXmpMetadata(XMP_HEADER)    err = s.SavePDFAndRespondWith(type, id, customerNumber, user, pdf)    if err != nil {        return err    }內容 XMP 內容看起來像這樣,是從工作示例文件中取出的。示例文件不是用 Go 和 gofpdf 生成的。     var XMP_HEADER = []byte(`    <?xpacket begin="???" id="W5M0MpCehiHzreSzNTczkc9d"?>    <x:xmpmeta xmlns:x="adobe:ns:meta/">    <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">打開結果文件(示例)時,您可以看到嵌入的 XMP 數據:<< /Type /Metadata /Subtype /XML /Length 3286 >>stream  <<< ... RDF ...  >>>endstreamendobj6 0 obj<</Producer (FPDF 1.7)/CreationDate (D:20200615175638)>>endobj7 0 obj這個 XMP 似乎沒有被任何驗證器或 adobe 接收。任何幫助表示贊賞。
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

您可以看到數據,但就 PDF 而言,它只是文件中從未使用過的垃圾。有效的 XMP 元數據需要在 PDF 結構中公布,特別是在 Catalog 對象中。您的目錄對象如下所示:


7 0 obj

<<

/Type /Catalog

/Pages 1 0 R

>>

endobj

一個健康的 PDF 文件如下所示:


5 0 obj

<<

/Metadata 2 0 R

/Pages 1 0 R

/Type /Catalog

>>

endobj

縮進和對象編號當然不重要。重要的是目錄應包含一個名為“元數據”的鍵,該鍵指向您的 XMP 流。我的 PDF 規范版本中的第 7.7.2 段。


因此,您需要了解如何使用您擁有的庫來實現這一目標。


PS:順便說一句,有趣的是,一個 XMP 掃描儀應用程序被創建為與文件格式無關(至少最初的想法是),它會選擇你的 XMP,因為它只會掃描文件以搜索 XMP 簽名:)


查看完整回答
反對 回復 2022-06-13
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號