我使用下面给出的链接来使用:Get and set metadata for itext pdf document
在itext 5中获取元数据目前,我也可以使用代码片段在itext7中获取元数据:
<script type='text/javascript'>
function men(e){
var ok = $(e).attr('id');
var ol = $(e).attr('id');
// alert(ol[0].currentTime); --- GIVES ME UNDEFINED
$.ajax({
type : 'POST',
url : 'updatetime.php',
data : {ok: ok, om: om},
success : function(r)
{
}
});
}
</script>
<?php
$tl="channel";
$ooa="playing";
$played="played";
$timeline = mysqli_query($con, "SELECT * FROM plays WHERE streamers_type ='$tl' AND played !='$played' GROUP BY streamers_id ORDER BY id ASC") or die ();
while($row = mysqli_fetch_array($timeline)) {
$id = $row['id'];
$file1 = $row['file1'];
$video_name = $row['video_name'];
$video_type = $row['video_type'];
?>
<video class="uopi spinal" id="<?php echo $id ?>" style="height:180px; width:100%!important;" autoplay muted onended="run(this)" ontimeupdate="men(this)"><source src="plays/<?php echo $file1 ?>" type="<?php echo $video_type ?>"></video>
<?php } ?>
我不知道如何使用相同的方式获取自定义属性。 我可以使用以下方式设置自定义元数据:
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src));
PdfDocumentInfo info = pdfDoc.getDocumentInfo();
info.getAuthor();
info.getCreator();
info.getProducer();
如何在不对密钥名称进行硬编码的情况下以编程方式获取此值? 此外,有没有办法获得这些元数据值(包括自定义元数据),而无需实际写入:
pdfDoc.getDocumentInfo().setMoreInfo("Test", "test");
答案 0 :(得分:2)
不用担心,得到了答案。 之前没有意识到:
PdfDictionary map = info.getPdfObject();
返回地图类型对象。解析地图以获取包括自定义属性在内的所有键值对。 以下是完整的代码段:
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfDocumentInfo;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfObject;
import com.itextpdf.kernel.pdf.PdfReader;
import java.io.File;
import java.io.IOException;
import java.util.Map.Entry;
public class GetInfo {
public static final String SRC = "hello.pdf";
public static void main(String[] args) throws IOException {
File file = new File(SRC);
file.getParentFile().mkdirs();
new GetInfo().manipulatePdf(SRC);
}
public void manipulatePdf(String src) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src));
PdfDocumentInfo info = pdfDoc.getDocumentInfo();
PdfDictionary map = info.getPdfObject();
for(Entry<PdfName, PdfObject> entry : map.entrySet()){
System.out.println(entry.getKey().getValue() + " - " + entry.getValue() );
}
pdfDoc.close();
}
}
答案 1 :(得分:0)
在iText 7.0.8+中,您可以通过这种方式获取pdf元数据映射。
npm run build
您可以使用以下方法设置自定义元数据:
PdfDocument pdfDoc = new PdfDocument(new PdfReader(src));
//get metadata map
PdfDictionary catalog = pdfDoc.getTrailer();
PdfDictionary map = catalog.getAsDictionary(PdfName.Info);
for (Map.Entry<PdfName, PdfObject> entry : map.entrySet()) {
System.out.println(entry.getKey().getValue() + " - " + entry.getValue());
}
pdfDoc.close();