0

Open Office で単一ページのフォームを多数作成し、それらを PDF ドキュメントにエクスポートしました。

私のアプリケーションでは、これらの pdf ドキュメントをいくつか開き、フォーム要素に入力して結合し、保存します。

特定のフォームの各行にリストを印刷しています。問題は、リストがページのサイズを超える場合、ページを複製し、残りのページに残りの項目を追加する必要があることです。

同じ名前のドキュメントに複数のフィールド名があると問題があるようです。最初のフィールドのみに値があり、同じ名前の後続のフィールドは空白です。

コードはこのようなものです。現在、正確なコードを持っていません。

        org.pdfclown.files.File output = new org.pdfclown.files.File();
        PageManager pageManager = new PageManager(output.getDocument());

        for(org.pdfclown.files.File pdfPage : pdfPages) {

            //fill in the form element ...
            pdfPage.getDocument().getForm().getFields().get("some_field").setValue("something");

            pageManager.add(pdfPage.getDocument());
        }

        java.io.File temp = Files.createTempFile("Test", ".pdf").toFile();
        output.save(temp, SerializationModeEnum.Standard);

OpenOffice からエクスポートするときに、フォーム名の重複を許可するチェックボックスがあることに気付きました。誰かが以前にこの問題を抱えていましたか? 重複するフォーム名を異なる値で表示できる API はありますか?

4

2 に答える 2

0

何を試しても、あなたの方法を使用して問題を解決できませんでした。すべてのページのすべてのフィールドが同じ名前になりました。結果のファイルには、最初のページのコピーが 150 必要でした。私のアプローチは異なり、最初のページのみを含む 150 個の PDF を作成し、そのすべてでこのコードを実行します。

public override void Run()
{
  // 1. Magic...
  string resourcePath = System.IO.Path.GetFullPath("../../../../main/res/samples/input/" + "pdf");

  // Get the list of available PDF files
  string[] filePaths = System.IO.Directory.GetFiles(resourcePath + System.IO.Path.DirectorySeparatorChar, "*.pdf");

  // Cycle through files
  for (int index = 0; index < filePaths.Length; index++)
  {
      using (File file = new File(filePaths[index]))
      {
          Document document = file.Document;

          // 2. Get the acroform!
          Form form = document.Form;
          foreach (Page page in form.Document.Pages)
          {
              foreach (var s in page.Document.Form.Fields.Values)
              {
                  s.Name = s.FullName + index.ToString();
              }

          }
          Serialize(file, file + index.ToString(), SerializationModeEnum.Incremental);

      }
  }
}

その後、Adobe Acrobat DC を使用してそれらを 1 つのファイルに結合するだけです。このコードは、PDFClown のサンプルを少し変更したものです。

于 2016-02-19T14:21:24.310 に答える
0

この問題を実際に解決したことはありませんが、別の方法を考え出しました。各ページで、すべてのフォーム要素を繰り返し処理し、「[x]」を追加して名前を変更しました。「x」はページ番号です。これにより、各ページのフォーム要素が一意になりました。

于 2013-10-27T10:25:37.487 に答える