簡體   English   中英

將 iTextSharp.text.pdf.BarcodeQRCode 轉換為 System.Drawing.Image

[英]Convert iTextSharp.text.pdf.BarcodeQRCode to System.Drawing.Image

尋找將iTextSharp.text.pdf.BarcodeQRCode轉換為System.Drawing.Image的方法

這是我目前所擁有的......

public System.Drawing.Image GetQRCode(string content)
{
     iTextSharp.text.pdf.BarcodeQRCode qrcode = new iTextSharp.text.pdf.BarcodeQRCode(content, 115, 115, null);
     iTextSharp.text.Image img = qrcode.GetImage();
     MemoryStream ms = new MemoryStream(img.OriginalData);
     return System.Drawing.Image.FromStream(ms); 
}

在上面的第 3 行中,使用 img.OriginalData 返回 null 在第 3 行使用 img.RawData 而不是在第 4 行出現無效參數錯誤。

我已經搜索了一些關於如何執行您想要的東西的代碼示例,並且您的代碼(“OriginalData”方法)基本相同: https://csharp.hotexamples.com/examples/iTextSharp.text.pdf/ BarcodeQRCode/-/php-barcodeqrcode-class-examples.html

但是,我不明白它是如何工作的。 從我對BarcodeQRCode#getImage的調查來看,處理此類條形碼時似乎未設置OriginalData ,因此它始終為 null。

不僅如此,您提到的代碼屬於iText 5,該代碼已終止並且不再維護(除了大量安全修復程序),因此建議更新到iText 7。

至於 iText 7,我確實看到了如何在 Java 中實現相同的效果,因為條形碼類確實有一個createAwtImage方法。 另一方面,.NET 缺少這樣的功能,所以我很遺憾在 .NET 中無法做到這一點。

這有一些很好的理由。 iText 的Image (和條形碼可以很容易地轉換為 iText 的Image object 如下所示: https://kb.itextpdf.com/home/it7kb/faq/how-to-generate-2d-barcode-as-vector- image ) 表示 PDF 的 XObject。 在 PDF 語法中,圖像文件(jpg、png 等)是一個 XObject,其中存儲了原始圖像數據。 但是,XObject 也可以包含 PDF 語法內容(它不僅用於圖像文件)。 所以要渲染這樣一個內容,需要將數據從 PDF 語法處理為圖像語法,這並不容易。 Java的awt中有一些方法可以做到這一點,這就是它在Java中實現的原因。 至於.NET,由於沒有開箱即用的方法將PDF圖像轉換為System.Drawing.Image,所以決定不實現。

總而言之,還有另一個 iText 產品pdfRender ,它允許將 PDF 文件(您可以為條形碼創建一個頁面)轉換為圖像。 也許您可能想玩它: https://itextpdf.com/en/products/itext-7/convert-pdf-to-image-pdfrender

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM