Chris LoveのBarcode Handler(2部構成)を使用してiTextSharpでバーコードを表示する

私はデータベースからのUPCのセットからページ上に多数のバーコードをイメージとして作成する必要がある状況があります。

また、Dymo LabelMakerにラベルとして印刷できるバーコードも作成したいと考えています。

グーグルではいくつかの選択肢がありましたが、LabelMakerではバーコードをPDFとして生成するのが賢明でしょうか?

だから、私はiTextSharpを見て始めました。

バーコードイメージをページにレンダリングする簡単な方法を探して、私はこれを見つけました。これは私が欲しいものを正確に行うように見えますが、私はそれをローカルでしか動かすことができません。サーバーにアップロードすると、空のイメージが表示されます。

私の質問のパート1はなぜ​​ですか?

web.configファイルに必要なものがすべて含まれていることを確認して確認し、Adobe Readerがサーバーにインストールされていることを確認しています(リンク内の別の投稿が示唆したように)。リンクには次のような投稿があります

Hi, Great article, many thanks. I just wanted to put a small update for those running IIS7, if everything works fine when running locally in VS debug mode, but you get a red x when accessing it remotly, you may need to add the handler in the section as well as/or the i.e.

どちらが問題に答えているように聞こえますか?

http:// professionalaspnet .com/archive/2008/11/09/A-Quick-and-Dirty-Bar-Code-Image-httpHandler.aspx

私の質問の第2部は、iTextSharpを使って個々のバーコードをLabelMakerに印刷するための正しい行に向かっていますか?

ちょうどあなたが知っている、私は.NET 2.0を使用してVBでコーディング

1
あなたは間違いなくAcrobatやReaderをサーバーに必要としないので、iTextSharpはそれとは完全に独立しています。 HTMLに埋め込まれているのではなく、リソースに直接アクセスするとどうなりますか? YOU_SITE/barcode.gif?code = 1234567890
追加された 著者 Chris Haas,
404エラー、ページを見つけることができません空白の.gifイメージが必要かどうか、または Web.Config のvalidate = "false" type = "BarCodeHandler" />
追加された 著者 Jamie Hartnoll,

1 答え

.ashx HttpHandler を使用する場合、ウェブを混乱させる必要はありませんconfig。それはまったく同じです:

<%@ WebHandler Language="VB" Class="barcodeToGif" %>
Imports System
Imports System.Web
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Public Class barcodeToGif : Implements IHttpHandler
  Public Sub ProcessRequest(ByVal context As HttpContext) _
  Implements IHttpHandler.ProcessRequest
    context.Response.ContentType = "image/gif"
    Dim Request = context.Request
    Dim barcode As String = Request.QueryString("barcode")
    If barcode Is Nothing Then
      barcode = "39"
    End If
    Dim bc39 As New Barcode39()
    bc39.Code = barcode
    Dim bc As System.Drawing.Image = bc39.CreateDrawingImage( _
      System.Drawing.Color.Black, System.Drawing.Color.White _
    )
    bc.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
  End Sub

  Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
    Get
      Return False
    End Get
  End Property
End Class

そしてあなたの .html/.aspx ファイル:


img タグの src 属性は、HTTPハンドラと同じ名前(この場合 barcodeToGif.ashx )である必要があります。

0
追加された
それは面白いようです。私はこのようなことを一度も使ったことがないので、私の無知を許して、そのスクリプトに実際のバーコードをどのように渡すのですか?私はそれを実行しようとしましたが、まだ "ファイルが見つかりません"
追加された 著者 Jamie Hartnoll,
申し訳ありません、私はおそらく本当にばかげているが、私はそれを動作させることはできません!私はあなたが言っていることを見ていますが、それぞれの行をどこに置くべきかはわかりません。 Dim Request As HttpRequest = context.Request は、自分のページスクリプト、またはHandlerクラスに入る必要がありますか?私は後者を試して、 bc39.Code = "39" 行を bc39.Code = requestに変更したイメージが見つかりません。クエリー・ストリング( "コード")は実際のコードの位置をどのようにして読み込むかです。
追加された 著者 Jamie Hartnoll,
アー!今それは動作しますが、再びローカルでのみ、セキュリティ例外を返して生きて、私は信頼レベルを上げる必要があります。私は再び自分のウェブホストにメールを送ってきます。それは共有サーバーであり、それはトラブルを引き起こしている可能性があります...
追加された 著者 Jamie Hartnoll,
ありがとう。ホストは今、私に完全な許可を与えてくれましたが動作しますが、あなたのオプションは良く見えますが、私はDLLをコンパイルする方法を知らないので、ここで別の質問をしました: stackoverflow.com/questions/9175868/…
追加された 著者 Jamie Hartnoll,
バーコードは、提供したリンクと同じ方法でアクセスできます。最初に HttpRequest Dim Request As HttpRequest = context.Request を初期化し、後で QueryString プロパティにアクセスします。 Request.QueryString "MY_QUERYSTRING_PARAMETER")
追加された 著者 kuujinbo,
* .ashxファイルは、既定でマップされていて、そのまま使用する必要があります。あなたのサーバーで確認することができます: \%SystemRoot%\ Microsoft.NET \ Framework \%VersionNumber%\ CONFIG&zwnj; `。これは、 セクションの最初のノードとして を追加することで、 web.config`を変更した場合、デフォルト。
追加された 著者 kuujinbo,
ちょうど答えを更新しました。まず、 .ashx ファイルに直接アクセスしてください 。たとえば、 Exception をスローして .html \ .aspx ページにアクセスするコードのどこかに問題がある場合は、画像が見つかりません。 .ashx に直接アクセスする場合は、 web.config に問題があります。
追加された 著者 kuujinbo,
Webホスティングプロバイダが完全信頼を許可しない場合は、ソースコード a>と自分で作成してください。
追加された 著者 kuujinbo,
Visual Studio express(VB版)をダウンロードしてソースコードディレクトリに移動し、 itextsharp.sln という名前のファイルをダブルクリックします。 AssemblyInfo.cs を編集して、ソリューションをビルドします。 Configuration Manager Release 任意のCPU を選択します。あなたは.NET 2.0を使用していると言いました。 Microsoftのサイトで2010年版の代わりに2005/2008版を見つけることができます。
追加された 著者 kuujinbo,