Go에서 PDF 양식 채우기 및 벤드펴기


소개하다.


PDF 양식은 고객, 사용자 또는 직원 정보를 쉽게 수집하고 저장할 수 있는 도구입니다.예를 들어, JSON 파일에서 값을 입력하여 영구적인 PDF 파일, 즉 벤드펴기되어 편집할 수 없는 PDF 파일을 만들면 웹 사이트에서 데이터를 수집하여 PDF 양식에 삽입할 수 있습니다.
Go는 보통 클라우드 언어라고 불리며, 가장 작은 Docker 용기나 다른 용기에서 쉽게 배치할 수 있도록 강력한 프로그램을 만들고, 독립된 이진 파일로 배치할 수 있습니다.그것은 마이크로 서비스의 완벽한 선택이다. 그 빠른 속도는 너로 하여금 다른 학우들을 격파할 수 있게 한다.따라서 Go에서 PDF를 처리하면 뛰어난 성능, 클라우드 로컬 응용 프로그램과 단순성, C 기반 응용 프로그램보다 높은 안전성을 얻을 수 있습니다.
사용자는 전자 우편으로 작성하고 보내거나 사이트의 표를 통해 데이터를 수집할 수 있는 PDF 형식의 프로그램을 사이트에서 다운로드할 수 있다.모든 프로그램을 저장해서 처리할 수 있으며, 이 복사본은 본질적으로 데이터가 작성된 폼이지만, 값이 내용에 삽입되어 문서의 편집할 수 없는 부분이 되어 편평하게 만들어집니다.
다음 단계는 정보의 불변성을 확보하기 위해 PDF 양식을 편평하게 만드는 것이다.이제 PDF를 기록용으로 아카이브하고 고객, 사용자 또는 직원에게 이메일로 사본을 보낼 수 있습니다.이것은 업무 흐름을 부드럽게 하기 위해 PDF 폼을 채우고 펴는 방법의 예이다.

대강


이 문서에서는 다음을 설명합니다.
  • 템플릿 PDF
  • 에 채울 수 있는 PDF 양식 작성
  • PDF 양식에 JSON 형식의 입력 데이터를 프로그래밍하여 작성
  • 채워진 PDF를 벤드펴기하고 양식 없이 편집할 수 없는 출력 PDF
  • 를 작성합니다.
  • 필요에 따라 한 걸음에 채우기와 평평함을 완성한다.
  • 단순 템플릿 PDF 파일에서 채울 수 있는 PDF 양식 만들기


    많은 경우에, 너는 이미 표를 준비했다.Adobe Acrobat을 사용하여 작성되었을 수도 있고, 디자이너가 더 높은 디자인 소프트웨어에서 준비한 것일 수도 있고, Adobe Acrobat 또는 다른 소프트웨어를 사용하여 위에 추가한 폼 필드일 수도 있습니다.
    우리가 어떤 양식도 준비하지 않았다면 어떻게 해야 할지 봅시다.MS Word를 사용하여 간단한 PDF 파일을 준비하고 PDF로 내보냅니다.그림 1은 키 항목이 왼쪽에 있는 결과 PDF 파일을 보여 줍니다. 예를 들어 전체 이름, 뒤에 값을 입력하기 위한 공백이 있습니다.

    그림 1: 보기 필드가 있는 간단한 PDF 양식 템플릿
    이 PDF는 Adobe Reader나 웹 브라우저와 같은 PDF 뷰어에서 열면 텍스트만 볼 수 있고 값을 삽입할 수 없다는 의미입니다.
    채우기 가능한 PDF 양식으로 변환하려면 문서의 필드와 해당 위치(PDF 공간 좌표)를 나타내는 PDF에 데이터를 추가해야 합니다.입력 필드가 있는 사각형의 좌표를 정의한 다음 PDF 문서에 UniPDF 주석기 패키지로 필드를 구성할 수 있습니다.
    우리는 정의를 통해
    이름?각 필드에는 직접 참조할 수 있도록 고유한 이름이 있습니다.이름은 일반적으로 필드가 대표하는 내용을 나타낸다.
    위치(Rect).PDF 좌표를 사용하여 사각형 영역의 테두리를 나타냅니다.
    가치관.필드의 값입니다(채워진 경우).필드 유형에 따라 다릅니다.예를 들어, 확인란의 경우 true/false가 될 수 있습니다.텍스트 상자의 값은 간단한 문자열이고 선택 필드(드롭다운 목록)의 값은 옵션 목록에서 선택한 문자열입니다.
    예를 들면 다음과 같습니다.
    // textFieldsDef is a list of text fields to add to the form. 
    // The Rect field specifies the coordinates of the field.
    var textFieldsDef = []struct {
        Name string
        Rect []float64
    }{
        {Name: "full_name", Rect: []float64{123.97, 619.02, 343.99, 633.6}},
        {Name: "address_line_1", Rect: []float64{142.86, 596.82, 347.3, 611.4}},
        {Name: "address_line_2", Rect: []float64{143.52, 574.28, 347.96, 588.86}},
        {Name: "age", Rect: []float64{95.15, 551.75, 125.3, 566.33}},
        {Name: "city", Rect: []float64{96.47, 506.35, 168.37, 520.93}},
        {Name: "country", Rect: []float64{114.69, 483.82, 186.59, 498.4}},
    }
    
    // checkboxFieldDefs is a list of checkboxes to add to the form.
    var checkboxFieldDefs = []struct {
        Name    string
        Rect    []float64
        Checked bool
    }{
        {Name: "male", Rect: []float64{113.7, 525.57, 125.96, 540.15}, Checked: true},
        {Name: "female", Rect: []float64{157.44, 525.24, 169.7, 539.82}, Checked: false},
    }
    
    // choiceFieldDefs is a list of comboboxes to add to the form with specified options.
    var choiceFieldDefs = []struct {
        Name    string
        Rect    []float64
        Options []string
    }{
        {
            Name:    "fav_color",
            Rect:    []float64{144.52, 461.61, 243.92, 476.19},
            Options: []string{"Black", "Blue", "Green", "Orange", "Red", "White", "Yellow"},
        },
    }
    
    그런 다음 각 유형에 대한 필드를 만듭니다.예를 들어, 텍스트 필드의 경우 텍스트 필드를 작성하여 페이지 주석에 추가합니다.
     for _, fdef := range textFieldsDef {
            opt := annotator.TextFieldOptions{}
            textf, err := annotator.NewTextField(page, fdef.Name, fdef.Rect, opt)
     if err != nil {
                panic(err)
            }
    
            *form.Fields = append(*form.Fields, textf.PdfField)
            page.AddAnnotation(textf.Annotations[0].PdfAnnotation)
        }
    
    다른 필드 유형의 과정은 다음과 같다. 아래의 완전한 놀이공원 코드 예시와 같다.
    마지막으로 PDF를 내보냅니다.
     pdfWriter.SetForms(form)
     return pdfWriter.WriteToFile(outputPath) 
    
    내보낸 PDF 파일은 다음 그림 2와 같습니다.온전한 코드 세션 뒤에는 놀이공원의 예시가 있는데, 우리 놀이공원에서 수정하고 운행할 수 있다.이 필드들은 뷰어에 값을 삽입할 수 있는 입력이 되어 있음을 알 수 있습니다.

    그림 2: 템플릿 PDF 파일에 작성된 PDF 양식.

    샘플 운동장 - PDF 양식 만들기


    다음은 단순 PDF 템플릿에서 양식을 작성한 전체 예입니다.

    https://play.unidoc.io/p/b1e80f0f92ddfa42

    PDF 형식으로 필드 나열


    영업 부서에서 PDF 요청서를 받고 데이터베이스에서 고객 정보를 작성하라는 요청을 받았을 때 PDF의 필드와 고객 정보와 일치하는 방법을 알아야 한다.
    Adobe Acrobat과 같은 강력한 PDF 편집기는 필드 이름과 속성(예: 기본 글꼴, 글꼴 크기 등)을 포함하여 필드 정보를 시각적으로 표시할 수 있습니다.
    프로그래밍 방식으로 필드 정보를 수집하는 것도 편리하다.UniPDF에서 필드 데이터를 처리할 때 필드 정보를 JSON으로 표시하는 것이 매우 편리합니다.사실 폼을 통해 PDF에서 온전한 필드 정보를 얻는 것은 매우 간단하다.이 방면의 기본 코드는 매우 간단하다.
    fdata, _ := fjson.LoadFromPDFFile("template1_with_form.pdf")
    jsonData, _ := fdata.JSON()
    fmt.Printf("%s\n", jsonData)
    
    예를 들어, 그림 2에 표시된 PDF 양식의 출력은 다음과 같습니다.
    [
        {
            "name": "full_name",
            "value": ""
        },
        {
            "name": "address_line_1",
            "value": ""
        },
        {
            "name": "address_line_2",
            "value": ""
        },
        {
            "name": "age",
            "value": ""
        },
        {
            "name": "city",
            "value": ""
        },
        {
            "name": "country",
            "value": ""
        },
        {
            "name": "male",
            "value": "Off",
            "options": [
                "Off",
                "Yes"
            ]
        },
        {
            "name": "female",
            "value": "Off",
            "options": [
                "Off",
                "Yes"
            ]
        },
        {
            "name": "fav_color",
            "value": ""
        }
    ]
    
    따라서 이것은 우리가 어떤 필드를 가지고 어떤 값을 입력할 수 있는지 매우 명확하게 나타낸다.이 필드는 아래에서 사용하고 PDF를 평평하게 펴는 프로그래밍 방식으로 채워집니다.
    다음은 완전한 운동장 예시입니다. 그 중에서 그것을 운행하고 출력을 볼 수 있습니다.

    운동장 예제 - 필드를 PDF 형식으로 나열합니다.



    https://play.unidoc.io/p/c22768ba4fd68e90

    PDF 양식 작성


    PDF 양식을 작성하려면 필드에 값을 삽입해야 합니다.편집기에서, 이것은 한 사람이 필드에 값을 입력하고 저장한 것처럼 보인다.이 값들은 여전히 편집하고 변경할 수 있다.
    사용자나 데이터베이스에서 값을 수집하고 PDF를 주입하는 자동화 프로세스의 경우 값을 프로그래밍으로 채워야 합니다.
    PDF 테이블을 삽입하고 작성하는 기본 방법은 다음과 같습니다.
    // Load the form data to be inserted (key/values) from JSON file.
    fdata, _ := fjson.LoadFromJSONFile(`data.json`)
    
    // Load the PDF.
    pdfReader, _ := model.NewPdfReaderFromFile(`form.pdf`, nil)
    
    // Options for default appearance of contents.
    fieldAppearance := annotator.FieldAppearance{OnlyIfMissing: true, RegenerateTextFields: true}
    
     // Populate the form data.
    pdfReader.AcroForm.FillWithAppearance(fdata, fieldAppearance)
    
    // Write out filled PDF.
    pdfWriter, _ := pdfReader.ToWriter(nil)
    pdfWriter.WriteToFile("form_filled.pdf")
    
    간단하게 FillWithAppearance 설정한 값에 따라 외관을 만드는 것이 아니라 Fill 을 사용합니다.대부분의 경우 기본 모양새가 표시되지만 값을 편집하면 대부분의 뷰어는 이러한 값을 기반으로 모양새를 생성할 수 있습니다.글씨체 등 다른 것도 맞춤형으로 제작할 수 있다.
    출력 파일 양식 이(가) 채워졌습니다.pdf는 다음과 같다(그림3).우리는 이 값들이 이미 채워져 있지만, 표는 여전히 편집할 수 있다는 것을 분명히 볼 수 있다.

    그림 3: 채워진 PDF 양식의 예(확장되지 않음).
    UniDoc 놀이터에서 실행할 수 있는 완전한 예는 다음과 같습니다.

    운동장 예제 - PDF 형식의 값으로 필드 채우기



    https://play.unidoc.io/p/a332fa2932e3f516

    채워진 PDF 양식 벤드펴기


    PDF가 채워진 후에도 뷰어에서 볼 때 PDF를 편집할 수 있습니다.많은 경우 이러한 값을 최종적으로 확정하거나 평평하게 하여 내용, 즉 PDF의 고유 부분으로 만들기를 원하기 때문에 편집하기 어렵다.
    이를 설명하기 위해 위에 채워진 PDF 양식(그림 3)을 사용하고 내용을 편집할 수 없는 PDF로 벤드펴기합니다.아래 부분에서 우리는 한 단계에서 어떻게 채우고 평평하게 펴는지 보여줄 것이다. 이것은 일반적으로 취할 수 있는 것이다.
    채워진 PDF 양식을 플랫하게 만드는 코드는 다음과 같습니다.
    pdfReader, f, _ := model.NewPdfReaderFromFile(inputPath, nil)
    defer f.Close()
    
    // Flatten form.
    fieldAppearance := annotator.FieldAppearance{OnlyIfMissing: true, RegenerateTextFields: true}
    
    pdfReader.FlattenFields(true, fieldAppearance)
    
    // Generate a PdfWriter instance from existing PdfReader.
    // AcroForm field is no longer needed in the output.
    pdfWriter, _ := pdfReader.ToWriter(&model.ReaderToWriterOpts{
        SkipAcroForm: true,
    })
    
    // Write the output flattened file.
    pdfWriter.WriteToFile(outputPath)
    
    위에서 작성한 양식(그림 3)에 적용한 다음 그림과 같이 채워진 PDF가 플랫화됩니다(그림 4).필드의 모양이 평평하고 내용의 일부분이며, 폼/필드는 더 이상 편집할 수 없습니다.일반적으로 양식과 필드를 나타내는 AcroForm 사전도 PDF의 다른 부분과 마찬가지로 PDF 컨텐트의 일부에 불과하므로 삭제됩니다.

    그림 4: 채워진 PDF가 플랫화되고 값이 컨텐트의 일부가 됩니다.
    아래의 놀이공원 예는 PDF 폼을 평평하게 펼친 완전한 실행 예시를 보여 줍니다. 저희 놀이공원에서 불러오고 실행할 수 있습니다.

    운동장 예제 - 플랫 채우기 PDF 양식



    https://play.unidoc.io/p/6b04a0779dfa37d3

    한 번에 PDF 양식 채우기 및 벤드펴기 완료


    위에서 PDF 양식을 작성, 채우기 및 벤드펴기하는 방법에 대해 설명합니다.흔히 볼 수 있는 용례는 한 단계에서 채우고 펴는 것이다.준비된 PDF 양식에 고객 정보 작성과 같은 외부 정보를 입력해야 하는 응용 프로그램에서는 일반적으로 이 기능을 사용할 수 있습니다.
    또 다른 예는 PDF를 사용하여 일상적인 업무 주문서와 다른 업무 문서를 수집하는 것이다.
    PDF 양식을 사용하여 수집된 데이터를 수동으로 찾아보는 것은 조직 리소스를 비효율적으로 활용하는 데 시간이 많이 걸릴 수 있습니다.UniPDF를 사용하여 양식으로 수집된 데이터를 프로그래밍하여 정리, 처리 및 의미 있는 작업을 수행할 수 있습니다.
    이 절차는 데이터를 수집한 후에 진행된다.UniPDF는 데이터 수집 단계를 완료하는 데 도움을 줄 수도 있습니다.Golang의 강력한 기능을 사용하여 모든 데이터 소스에서 나온 데이터를 UniPDF의form builder를 사용하여 작성된 정교한 PDF 보고서로 변환할 수 있습니다.

    예제 운동장 - PDF 테이블 작성 및 펴기



    https://play.unidoc.io/p/d142b775efc39cde

    결론


    UniPDF를 사용하여 사용자로부터 정보를 수집할 수 있는 정교한 PDF 양식을 구성할 수 있습니다.이 양식들은 판매, 조회 및 기타 업무 절차의 구조화된 기록을 유지하고 보관할 수 있다.
    UniPDF의 도움을 받아 이 절차를 간소화할 수 있으며 여러 가지 방식으로 이 라이브러리를 사용하여 사무 업무의 효율을 높일 수 있습니다.
    UniDoc는 고객의 피드백에 따라 라이브러리를 계속 개선하고 있습니다. 라이브러리에 기능을 포함하려면 UniDoc의 GitHub에서 영수증을 마음대로 열면 전체 예시 라이브러리를 볼 수 있습니다. 이 예시 라이브러리는 UniDoc를 사용하기 위해 구축된 것입니다.귀하도 사이트의 표를 통해 저희에게 연락하실 수 있습니다.
    이제 무료 레이어에 등록하고 UniDoc의 PDF 양식을 사용하십시오. 문제가 있으면 문의하십시오.

    좋은 웹페이지 즐겨찾기