从使用LaTeX创建的PDF中,如何检索使用LaTeX绘制的图像?
我有从pdf中检索图像的c#代码。不幸的是,它只检索以JPEG,PNG等形式插入PDF的图像。
这是我用于从PDF中提取图像的代码。
class Image_Retriever
{
public static void retrieve_image(String PDFSourcePath, String pdf_image_extraction_path)
{
PdfReader reader = new PdfReader(PDFSourcePath);
PRStream pst;
PdfImageObject pio;
PdfObject po;
int n = reader.XrefSize; //number of objects in pdf document
FileStream fs = null;
try
{
for (int i = 0; i < n; i++)
{
po = reader.GetPdfObject(i); //get the object at the index i in the objects collection
if (po == null || !po.IsStream()) //object not found so continue
continue;
pst = (PRStream)po; //cast object to stream
PdfObject type = pst.Get(PdfName.SUBTYPE); //get the object type
//check if the object is the image type object
if (type != null && type.ToString().Equals(PdfName.IMAGE.ToString()))
{
pio = new PdfImageObject(pst); //get the image
fs = new FileStream(pdf_image_extraction_path + "image" + i + ".jpg", FileMode.Create);
//read bytes of image in to an array
byte[] imgdata = pio.GetImageAsBytes();
//write the bytes array to file
fs.Write(imgdata, 0, imgdata.Length);
fs.Flush();
fs.Close();
}
}
}
catch (Exception e) { Console.WriteLine(e.Message); }
}
}
以上代码无法检索LaTeX绘制的图像。
我听说在使用LaTeX准备pdf文档时,用户可以使用LaTeX在PDF中绘制图像。是否还有代码来检索这些图像?
答案 0 :(得分:1)
我是LaTeX2HTML的前开发人员。 正如+ SkryptX已经说过的那样,访问postscript级别的对象需要你自己渲染矢量grafics。 最好的方法是让PS完成工作,然后剪切输出流中的图像。 LaTeX2HTML使用工具pstoppm将ps文件转换为ppm(便携式像素图)图像,然后是ppmtogif或ppmtopng。 除ps文件外,您还需要知道要剪辑的图像的边界框大小,这些数据可以从LaTeX源中提取。
现在已经不久了,所以我不能再详细介绍了。 但您可能需要查看l2h源代码并自行评论更多技术问题。