私は現在PDFBoxを使用しており、フォルダー1にあるa.pdf内から読んでいます
最初に、フォルダー内で見つかったすべての Pdf ファイルを一覧表示します。次に、各ファイルのページ数を確認します。ここで、フッターの下のファイルの最後に移動して、プリンターが認識できる画像を追加して、ファイルの終わりに達したことを認識するため、ページをステープルします。
ファイルのリストとページ数を取得するまでにたどり着きました。
最後のページの最後に移動してそこに書き込むには、どのコマンドを使用すればよいですか?
.pdf ファイルをテキストに変換する必要がありますか、それとも PDPageContentStream を使用できるようにする必要がありますか
これは私が現在使用しているコードで、AAA 文字列が pdf ファイルの最後のページに挿入されるかどうかをテストして確認しようとしています。プロジェクトはエラーなしで実行されていますが、何らかの理由で pdf に挿入されていません。
package pdfviewer;
import java.io.*;
import java.util.*;
import java.util.List;
import java.io.IOException;
import org.apache.pdfbox.PDFReader;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
public class Main {
/**
* @param args the command line arguments
*/
public static List flist()
{
List listfile = new ArrayList();
String path = "C:/1";
String files;
File folder = new File(path);
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".pdf") || files.endsWith(".PDF"))
{
listfile.add(listOfFiles[i]);
}
}
}
System.out.println(listfile);
return listfile;
}
public static void CheckPages(List a)
{
String dir = null;
Object[] arraydir = a.toArray(new Object[0]);
for (int i=0; i< arraydir.length; i++)
{
int pages = 0;
PDFont font = PDType1Font.HELVETICA_BOLD;
float fontSize = 12.0f;
dir = arraydir[i].toString();
System.out.println(dir);
try {
PDDocument pdoc = PDDocument.load(dir);
List allPages = pdoc.getDocumentCatalog().getAllPages();
pages = pdoc.getNumberOfPages();
System.out.println(allPages);
int f = pages;
System.out.println(pages);
PDPage page = (PDPage) allPages.get(i);
//System.out.println(page);
PDRectangle pageSize = page.findMediaBox();
float stringWidth = font.getStringWidth( "AAA" );
float centeredPosition = (pageSize.getWidth() - (stringWidth*fontSize)/1000f)/2f;
PDPageContentStream contentStream = new PDPageContentStream(pdoc,page,true,true);
//System.out.println(contentStream);
contentStream.beginText();
contentStream.setFont( font, fontSize );
contentStream.moveTextPositionByAmount( centeredPosition, 30 );
contentStream.drawString( "AAA" );
contentStream.endText();
contentStream.close();
pdoc.close();
}
catch (Exception e)
{
System.err.println("An exception occured in parsing the PDF Document."+ e.getMessage());
}
}
}
public static void main(String[] args)
{
List l = new ArrayList();
l = pdfviewer.Main.flist();
pdfviewer.Main.CheckPages(l);
}
}
ご清聴ありがとうございました
上記で使用していたコードは正しいです。問題は、生成される PDF ファイルがバージョン 1.2 であることです。これが、pdf ドキュメントの編集を許可されていない理由です。
バージョン1.2を使用している場合、実際にアップグレードできないため、どうすればよいか誰か知っていますか.