バージョン 1.0、1.1 の解決策: fop 1.0 および 1.1 では、メソッド setBaseURL() がローカル ファイルで正しく機能しないため、メソッド setURIResolveri を使用してインターフェイス URIResolver の実装を記述できます。
1.add in uses import javax.xml.transform.URIResolver;
2.mainClassに追加
private static class LocalResolver implements URIResolver {
private String BaseFolder;
@Override
public Source resolve(String href, String base) throws TransformerException {
File f = new File(BaseFolder + "\\" + href);
if (f.exists())
return new StreamSource(f);
else
throw new TransformerException("File " + f.getAbsolutePath() +" not found!");
}
public LocalResolver(String BaseFolder) {
this.BaseFolder = BaseFolder;
}
}
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
3.transformer.transform(src、res)を呼び出す前にこれを追加します:
fop.getUserAgent().setURIResolver(new LocalResolver("C:\\Users\\photon\\Downloads\\fop-1.1-bin\\fop-1.1"));