質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2214閲覧

itextを使用してバーコードとウォーターマーク付画像を出力したい

netta

総合スコア43

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/11/02 05:33

itextというツールを用いて、pdfファイルにバーコードと透過画像を出力したいのですが現状バーコードしか表示されずに困っています。
言葉足らずで申し訳ございませんがご教授いただけると幸いです。

開発環境
VB.net(2012)
VB
itext

実現したいこと
PDFファイルにitextを用いてバーコードと透かし画像(ウォーターマーク)を表示したい

Public Function CreateTempFile(filePath As String, createBarcode As Boolean) As String ' Tempファイルパス生成 Dim url as string = "test_barcode" Dim bf As BaseFont = BaseFont.CreateFont("c:\windows\fonts\msgothic.ttc,0", BaseFont.IDENTITY_H, True) Dim fs As New FileStream(HttpContext.Current.Server.MapPath(url), FileMode.Create) Dim image As iTextSharp.text.Image = _ iTextSharp.text.Image.GetInstance("C:\transparent_png_sample.png") Dim gs1 As PdfGState = New PdfGState ' 元PDF読込 Using reader = New PdfReader(filePath) ' 書込先PDF作成 Using doc = New Document() 'Using writer = PdfWriter.GetInstance(doc, New FileStream(HttpContext.Current.Server.MapPath(url), FileMode.Create)) Using writer = PdfWriter.GetInstance(doc, fs) Try Dim stamper As PdfStamper = New PdfStamper(reader, fs) ' PDF文書を開く doc.Open() Dim cb = writer.DirectContent ' ページ数分ループ For pageNum As Integer = 1 To reader.NumberOfPages If pageNum > 1 Then doc.NewPage() End If ' 元PDFページ読込 Dim page = writer.GetImportedPage(reader, pageNum) Dim rotation = reader.GetPageRotation(pageNum) Dim width = reader.GetPageSizeWithRotation(pageNum).Width Dim height = reader.GetPageSizeWithRotation(pageNum).Height Select Case rotation ' ページ回転設定がされている場合は補正 Case 0 cb.AddTemplate(page, 0, 0) Case 90 cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, height) Case 180 cb.AddTemplate(page, -1.0F, 0, 0, -1.0F, width, height) Case 270 cb.AddTemplate(page, 0, 1.0F, -1.0F, 0, width, 0) End Select If createbarcode And No <> "" Then ' バーコード生成(1ページ目のみ) If pagenum = 1 Then ' バーコード印字 Dim barcode = New Barcode39() barcode.Code = _moushikomiNo barcode.StartStopText = True barcode.GenerateChecksum = False Dim img = barcode.CreateImageWithBarcode(cb, Nothing, Nothing) 'バーコード埋め込み位置の場所を決め打ちする img.SetAbsolutePosition(400, 400) 'バーコードの画像を追加する cb.AddImage(img) End If End If Dim underimage As PdfContentByte = stamper.GetOverContent(pageNum) gs1.FillOpacity = 0.7F '画像配置位置の決め打ち() image.SetAbsolutePosition(100, 100) underimage = stamper.GetOverContent(pageNum) underimage.SetGState(gs1) underimage.AddImage(image) Next ' PDF文書を閉じる 'stamper.Close() doc.Close() Catch ex As Exception Try If Not doc.IsOpen Then doc.Open() End If writer.DirectContent.NewlineText() doc.Close() fs.Close() Catch ex2 As Exception End Try Throw ex End Try End Using End Using End Using 'End Using ' Url返却 Return url End Function

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんにちは、PDF、バーコードそして透かしを見たとたん、Free Spire.Office for .NETという無料の.NET用ライブラリーを思い出しました。世界中に一般的に使われているファイルに対してあらゆる操作をサポートしていて、バーコードや透かし画像などを表示するのは容易いことです。例えば以下のコードでバーコードを作成する例をご紹介します。

using Spire.Barcode; namespace Code39 { class Program { static void Main(string[] args) { BarcodeSettings bs = new BarcodeSettings(); bs.Type = BarCodeType.Code39; bs.Data = "*ABC 12345* "; BarCodeGenerator bg = new BarCodeGenerator(bs); bg.GenerateImage().Save("Code39Code.png"); System.Diagnostics.Process.Start("Code39Code.png"); } } }

おすすめしますよ(笑)

投稿2022/05/27 03:54

enj0ylife

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問