Go에서 PDF 파일의 워터마크 추가
12740 단어 programmingpdfproductivitygo
소개하다.
PDF 파일에 워터마크를 추가하는 것은 보안 목적과 파일 소스를 추적하는 데 유용합니다.지폐에 물자국이 있는 것처럼 위조는 더욱 어려워진다.가시적 워터마크(예: 회사 로고나 텍스트)는 다음과 같은 메시지를 전달할 수 있습니다.
이 문서에서는 UniPDF를 사용하여 PDF 파일에 워터마크를 추가하는 방법을 보여 줍니다.Go 프로그램을 만들어 PDF를 열고 이미지에서 로드된 워터마크를 적용하고 워터마크가 있는 PDF를 작성합니다.이 기초는 일괄 처리 프로그램이나 웹 서비스로 쉽게 바뀔 수 있다.
개요 - 주요 기능
우리 프로그램은 세 가지 인자를 받아들인다. 워터마크를 넣어야 하는 파일의 입력 경로, 워터마크로 사용할 이미지, 쓸 출력 파일이다.그런 다음 함수addWaterMarkImage를 호출하여 워터마크를 추가합니다.이 기능은 나중에 자세히 설명합니다.
func main() {
if len(os.Args) < 4 {
fmt.Printf("go run pdf_watermark_image.go input.pdf watermark.jpg output.pdf\n")
os.Exit(1)
}
inputPath := os.Args[1]
watermarkPath := os.Args[2]
outputPath := os.Args[3]
err := addWatermarkImage(inputPath, outputPath, watermarkPath)
if err != nil {
fmt.Printf("Error: %v\n", err)
os.Exit(1)
}
fmt.Printf("Complete, see output file: %s\n", outputPath)
}
가져오기 - 가져오기 PDF 파일을 로드합니다.
그래서 파일을 입력하는 것은 워터마크가 필요한 파일이다.이것은 임의의 여러 페이지를 포함하는 pdf 파일일 수 있지만, 본문을 읽는 데 편리하도록 이 보고서 카드 pdf 예시를 사용합니다.이 파일은 크리에이터 패키지를 사용하여 PDF 보고서 카드를 처음부터 만드는 방법에 대한 최근 블로그 글에서 만들어졌습니다.이 방법은 입력 경로에서 입력 파일을 읽는 데 사용됩니다.이것은 pdfReader 대상을 제공한 다음에 이 대상을 사용하여 워터마크를 생성할 수 있습니다.
// Read the input pdf file.
pdfReader, f, err := model.NewPdfReaderFromFile(inputPath, nil)
if err != nil {
return err
}
defer f.Close()
입력 파일 - 워터마크가 있는 PDF 리포트 카드를 추가할 예정입니다.
워터마크 이미지 - 로드 및 삽입
워터프린트 이미지는 투명한 배경(또는 흰색)이 있는 이미지를 사용하는 것이 중요하다. 비투명한 배경이 있는 이미지를 사용하면 원시 pdf를 방해하고 출력을 왜곡할 수 있기 때문이다.이 부분 코드에서 그림을 읽는 방법과 그림의 위치와 비율을 설정하는 방법을 볼 수 있습니다.사용한 이미지 유형에 따라 불투명도를 설정하는 것도 중요하다. 옅은 색을 가진 이미지의 불투명도를 낮추면 색이 줄어들기 때문이다.
watermarkImg, err := c.NewImageFromFile(watermarkPath)
if err != nil {
return err
}
c.AddPage(page)
watermarkImg.ScaleToWidth(c.Context().PageWidth)
watermarkImg.SetPos(0, (c.Context().PageHeight-watermarkImg.Height())/2)
watermarkImg.SetOpacity(0.125)
_ = c.Draw(watermarkImg)
이렇게 하면 컨텐트 맨 위에 워터마크가 투명하게 그려집니다.또는 배경이 번거로우면 먼저 그림을 그리고 그 위에 페이지 내용을 그릴 수 있습니다.이로 인해 워터마크가 모든 경우에 표시되지 않을 수 있습니다.이것은 용례와 수인 표시의 중요성에 달려 있다.
이 예에서는 unidoc 로고를 사용합니다.png은 워터마크로 되어 있습니다.
워터마크가 있는 PDF 파일 출력 생성하기
여기서 우리는 마력이 생기는 함수에 대해 토론할 것이다.UniPDF의 새 작성자 객체를 작성한 다음 입력 파일과 입력 이미지를 읽고 전체 PDF 파일의 워터마크를 반복합니다.
PDF 파일의 페이지 수를 얻기 위해 이 함수를 사용합니다.실패하면 페이지나 오류를 되돌려줍니다. (이것은 거의 영원히 일어나지 않을 뿐만 아니라 파일에 심각한 문제가 있음을 나타냅니다.)
numPages, err := pdfReader.GetNumPages()
if err != nil {
return err
}
이것은 우리가 교체할 수 있는 페이지 수를 되돌려주고, 한 페이지씩 써서, 필요한 불투명도로 워터프린트 그림을 그립니다.for i := 0; i < numPages; i++ {
pageNum := i + 1
// Read the page.
page, err := pdfReader.GetPage(pageNum)
if err != nil {
return err
}
// Add to creator.
c.AddPage(page)
watermarkImg.ScaleToWidth(c.Context().PageWidth)
watermarkImg.SetPos(0, (c.Context().PageHeight-watermarkImg.Height())/2)
watermarkImg.SetOpacity(0.125)
_ = c.Draw(watermarkImg)
}
그리고 출력 파일은 다음과 같이 쓰여 있다.파일을 쓰기 전에 원본 PDF의 아웃라인 트리와 양식을 적용하여 파일을 유지합니다(설정된 경우).// Add reader outline tree to the creator.
c.SetOutlineTree(pdfReader.GetOutlineTree())
// Add reader AcroForm to the creator.
c.SetForms(pdfReader.AcroForm)
return c.WriteToFile(outputPath)
결과 PDF 파일은 다음과 같습니다.운동장 예제 - PDF 파일 워터마크의 전체 실행 코드 ###
다음 재생 세그먼트에는 워터마크 PDF를 생성하는 전체 코드와 파일이 들어 있습니다.UniDoc 놀이공원 링크: https://play.unidoc.io/p/ededc48009bfaf76
결론
Golang과 UniPDF를 사용하여 워터마크가 있는 PDF를 간편하게 만드는 방법을 보여 드렸습니다.
동일한 기술을 사용하여 원하는 PDF에 이미지를 추가할 수도 있습니다.예를 들어, PDF 페이지에 QR코드 또는 바코드를 추가하거나 각 페이지에 찰진 바닥글 또는 머리글을 추가할 수 있습니다.
이 완전한 예는 우리PDF processing examples on GitHub의 일부분이며, 이 특별한 예는 here에서 찾을 수 있다.
Reference
이 문제에 관하여(Go에서 PDF 파일의 워터마크 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/unidoc/watermarking-pdf-files-in-go-3bjj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)