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

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

在 C# 中編輯 XPS 打印后臺文件(.SPL 擴展名)(另存為 Zip 問題)

在 C# 中編輯 XPS 打印后臺文件(.SPL 擴展名)(另存為 Zip 問題)

PHP
慕俠2389804 2024-01-20 15:39:01
當有人打印文檔(帶有 XPS 打印路徑)時,我想暫停打印作業并編輯 SPL(壓縮 XPS 格式)文件。如果我用 7zip 編輯文件并保存。如果我恢復作業,文檔打印沒有任何問題。如果我使用 System.IO.Compression.ZipFile 類或 DotNetZip 庫或 SevenZipSharp 庫打開 SPL 文件,然后從 SPL 文件中提取文件并從 SPL 文件中刪除該文件,然后再次將該文件添加到 SPL 文件中,它將生成完美的 zip 容器。我比較了原始 SPL 文件和使用 7zip、zipinfo、winrar 工具編輯的 SPL 文件,沒有發現任何差異。容器中的所有文件都完全相同。我還檢查了 CRC。當我打開、編輯和保存 zip 文件時,我不會更改有關壓縮方法、壓縮級別等的任何內容。正如我所說,兩個 zip 文件看起來完全相同,但如果我計算原始和編輯后的 SPL 文件的 CRC,它們就不是了相同的。在我編輯后(僅提取頁面文件,從容器中刪除它,然后將其再次添加到容器中),如果我嘗試恢復打印作業,我會在事件查看器中看到有關 PrintProcessor 的錯誤,并且無法打印它。編輯文件后我無法弄清楚發生了什么變化(不更改容器中的任何內容)。我要瘋了。SPL 文件的 Zip 格式有任何規范嗎?
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

如果我使用“ZipPackage”類,問題就解決了。


 using (var pack = ZipPackage.Open(xpsFileName, FileMode.Open, FileAccess.ReadWrite))

    {

        foreach (var part in pack.GetParts()) if (part.Uri.OriginalString.EndsWith(".fpage"))

            {

                using (var file = part.GetStream(FileMode.Open, FileAccess.ReadWrite))

                {

                    var page = ProcessPage(XElement.Load(file));

                    file.Position = 0;

                    page.Save(file);

                    file.SetLength(file.Position);

                }

            }

    }



查看完整回答
反對 回復 2024-01-20
  • 1 回答
  • 0 關注
  • 239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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