[英]Converting iTextSharp.text.Image back to 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.