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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。