2

私は次のバーコード画像を持っています:

ここに画像の説明を入力してください

次のiTextSharpVB.NETスクリプトを使用して、このバーコードを含むPDFドキュメントを生成しています。

Dim pdfDocument As iTextSharp.text.Document = Nothing

Dim filename As String = HttpContext.Current.Server.MapPath("barcode.pdf")

pdfDocument = New iTextSharp.text.Document()
Dim writer As iTextSharp.text.pdf.PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDocument, New FileStream(filename, FileMode.Create))

pdfDocument.Open()

Dim cb As iTextSharp.text.pdf.PdfContentByte = writer.DirectContent

pdfDocument.NewPage()

Dim img As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("barcode.jpg"))
pdfDocument.Add(img)

pdfDocument.Close()

Dim fInfo As New FileInfo(filename)
Dim numBytes As Long = fInfo.Length
Dim fStream As New FileStream(filename, FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fStream)
Dim data As Byte() = br.ReadBytes(CInt(numBytes))

HttpContext.Current.Response.Clear()
HttpContext.Current.Response.AddHeader("Content-Type", "binary/octet-stream")
HttpContext.Current.Response.AddHeader("Content-Disposition", String.Format("attachment; filename=barcode.pdf;size ={0}", data.Length.ToString()))
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.BinaryWrite(data)
HttpContext.Current.Response.Flush()
HttpContext.Current.Response.End()

ただし、このPDFが生成されると、画像が予想よりも大きく表示され、歪んでしまいます。

ここに画像の説明を入力してください

画像を特定のサイズに設定しているところがどこにも見えないのに、なぜこのように歪むのでしょうか。そして、どうすればそれを防ぐことができますか?

この画像は、バーコードスキャナーで読み取れるように、意図したサイズのままであることが重要です。

4

1 に答える 1

0

ここではいくつかのことが起こっていますが、実際にはiText/iTextSharpとは関係ありません。

まず、PDF内の画像を扱うときは、ピクセルだけでなく、常にインチまたはセンチメートルで考えてください。300DPIでの300ピクセルの画像は1インチ幅で、72DPIでの72ピクセルの画像も1インチ幅です。両方の画像はPDF内で1インチを占め、前者はそのスペースに詰め込むためのより多くのピクセルを持ち、潜在的に見栄えが良くなります。これは非常に重要です。

次に、上記の情報を使用して、1インチの画像でPDFを印刷し、それを拡大縮小しない場合(Acrobatのデフォルトは拡大縮小するFitです)、定規をつかんで正確に1インチを測定できるはずです。

第三に、Acrobat、Photoshop、またはその他のプログラムが「100%」と見なすものを真剣に知りません。Acrobatで、[編集]、[設定]、[ページ表示]に移動すると、解像度を調整でき、その変更が100%の定義になります。これを90%に変更し、1インチのオブジェクトを載せたプリントアウトを保持すると、最も近いYMMVと一致するように見えます。

私が思うこの第三のことはあなたの問題であり、主に「100%」が何を意味するのかです。あなたと私はそれが何意味するのかについての考えを持っていますが、Adobeは明らかに異なる考えを持っています。

于 2011-11-17T16:53:39.667 に答える